{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Recurrent Neural Networks for Language Modeling \n",
    "\n",
    "Recurrent Neural Networks (RNNs) is a powerful family of neural networks that are widely used for sequence modeling tasks (e.g. stock price prediction, language modeling). RNNs ability to exploit temporal dependecies of entities in a sequence makes them powerful. In this exercise we will model a RNN and learn tips and tricks to improve the performance.\n",
    "\n",
    "In this exercise, we will do the following.\n",
    "1. Create word vectors for a dataset created from stories available [here](https://www.cs.cmu.edu/~spok/grimmtmp/)\n",
    "2. Train a RNN model on the dataset and use it to output a new story"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\thushan\\documents\\python_virtualenvs\\tensorflow_venv\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n"
     ]
    }
   ],
   "source": [
    "# These are all the modules we'll be using later. Make sure you can import them\n",
    "# before proceeding further.\n",
    "%matplotlib inline\n",
    "from __future__ import print_function\n",
    "import collections\n",
    "import math\n",
    "import numpy as np\n",
    "import os\n",
    "import random\n",
    "import tensorflow as tf\n",
    "import zipfile\n",
    "from matplotlib import pylab\n",
    "from six.moves import range\n",
    "from six.moves.urllib.request import urlretrieve\n",
    "import tensorflow as tf\n",
    "from scipy.sparse import lil_matrix\n",
    "#import nltk\n",
    "#nltk.download() #tokenizers/punkt/PY3/english.pickle"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Downloading Data\n",
    "\n",
    "Downloading stories if not present in disk. There should be 100 files ('stories/001.txt','stories/002.txt', ...)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading file:  stories\\001.txt\n",
      "File  001.txt  already exists.\n",
      "Downloading file:  stories\\002.txt\n",
      "File  002.txt  already exists.\n",
      "Downloading file:  stories\\003.txt\n",
      "File  003.txt  already exists.\n",
      "Downloading file:  stories\\004.txt\n",
      "File  004.txt  already exists.\n",
      "Downloading file:  stories\\005.txt\n",
      "File  005.txt  already exists.\n",
      "Downloading file:  stories\\006.txt\n",
      "File  006.txt  already exists.\n",
      "Downloading file:  stories\\007.txt\n",
      "File  007.txt  already exists.\n",
      "Downloading file:  stories\\008.txt\n",
      "File  008.txt  already exists.\n",
      "Downloading file:  stories\\009.txt\n",
      "File  009.txt  already exists.\n",
      "Downloading file:  stories\\010.txt\n",
      "File  010.txt  already exists.\n",
      "Downloading file:  stories\\011.txt\n",
      "File  011.txt  already exists.\n",
      "Downloading file:  stories\\012.txt\n",
      "File  012.txt  already exists.\n",
      "Downloading file:  stories\\013.txt\n",
      "File  013.txt  already exists.\n",
      "Downloading file:  stories\\014.txt\n",
      "File  014.txt  already exists.\n",
      "Downloading file:  stories\\015.txt\n",
      "File  015.txt  already exists.\n",
      "Downloading file:  stories\\016.txt\n",
      "File  016.txt  already exists.\n",
      "Downloading file:  stories\\017.txt\n",
      "File  017.txt  already exists.\n",
      "Downloading file:  stories\\018.txt\n",
      "File  018.txt  already exists.\n",
      "Downloading file:  stories\\019.txt\n",
      "File  019.txt  already exists.\n",
      "Downloading file:  stories\\020.txt\n",
      "File  020.txt  already exists.\n",
      "Downloading file:  stories\\021.txt\n",
      "File  021.txt  already exists.\n",
      "Downloading file:  stories\\022.txt\n",
      "File  022.txt  already exists.\n",
      "Downloading file:  stories\\023.txt\n",
      "File  023.txt  already exists.\n",
      "Downloading file:  stories\\024.txt\n",
      "File  024.txt  already exists.\n",
      "Downloading file:  stories\\025.txt\n",
      "File  025.txt  already exists.\n",
      "Downloading file:  stories\\026.txt\n",
      "File  026.txt  already exists.\n",
      "Downloading file:  stories\\027.txt\n",
      "File  027.txt  already exists.\n",
      "Downloading file:  stories\\028.txt\n",
      "File  028.txt  already exists.\n",
      "Downloading file:  stories\\029.txt\n",
      "File  029.txt  already exists.\n",
      "Downloading file:  stories\\030.txt\n",
      "File  030.txt  already exists.\n",
      "Downloading file:  stories\\031.txt\n",
      "File  031.txt  already exists.\n",
      "Downloading file:  stories\\032.txt\n",
      "File  032.txt  already exists.\n",
      "Downloading file:  stories\\033.txt\n",
      "File  033.txt  already exists.\n",
      "Downloading file:  stories\\034.txt\n",
      "File  034.txt  already exists.\n",
      "Downloading file:  stories\\035.txt\n",
      "File  035.txt  already exists.\n",
      "Downloading file:  stories\\036.txt\n",
      "File  036.txt  already exists.\n",
      "Downloading file:  stories\\037.txt\n",
      "File  037.txt  already exists.\n",
      "Downloading file:  stories\\038.txt\n",
      "File  038.txt  already exists.\n",
      "Downloading file:  stories\\039.txt\n",
      "File  039.txt  already exists.\n",
      "Downloading file:  stories\\040.txt\n",
      "File  040.txt  already exists.\n",
      "Downloading file:  stories\\041.txt\n",
      "File  041.txt  already exists.\n",
      "Downloading file:  stories\\042.txt\n",
      "File  042.txt  already exists.\n",
      "Downloading file:  stories\\043.txt\n",
      "File  043.txt  already exists.\n",
      "Downloading file:  stories\\044.txt\n",
      "File  044.txt  already exists.\n",
      "Downloading file:  stories\\045.txt\n",
      "File  045.txt  already exists.\n",
      "Downloading file:  stories\\046.txt\n",
      "File  046.txt  already exists.\n",
      "Downloading file:  stories\\047.txt\n",
      "File  047.txt  already exists.\n",
      "Downloading file:  stories\\048.txt\n",
      "File  048.txt  already exists.\n",
      "Downloading file:  stories\\049.txt\n",
      "File  049.txt  already exists.\n",
      "Downloading file:  stories\\050.txt\n",
      "File  050.txt  already exists.\n",
      "Downloading file:  stories\\051.txt\n",
      "File  051.txt  already exists.\n",
      "Downloading file:  stories\\052.txt\n",
      "File  052.txt  already exists.\n",
      "Downloading file:  stories\\053.txt\n",
      "File  053.txt  already exists.\n",
      "Downloading file:  stories\\054.txt\n",
      "File  054.txt  already exists.\n",
      "Downloading file:  stories\\055.txt\n",
      "File  055.txt  already exists.\n",
      "Downloading file:  stories\\056.txt\n",
      "File  056.txt  already exists.\n",
      "Downloading file:  stories\\057.txt\n",
      "File  057.txt  already exists.\n",
      "Downloading file:  stories\\058.txt\n",
      "File  058.txt  already exists.\n",
      "Downloading file:  stories\\059.txt\n",
      "File  059.txt  already exists.\n",
      "Downloading file:  stories\\060.txt\n",
      "File  060.txt  already exists.\n",
      "Downloading file:  stories\\061.txt\n",
      "File  061.txt  already exists.\n",
      "Downloading file:  stories\\062.txt\n",
      "File  062.txt  already exists.\n",
      "Downloading file:  stories\\063.txt\n",
      "File  063.txt  already exists.\n",
      "Downloading file:  stories\\064.txt\n",
      "File  064.txt  already exists.\n",
      "Downloading file:  stories\\065.txt\n",
      "File  065.txt  already exists.\n",
      "Downloading file:  stories\\066.txt\n",
      "File  066.txt  already exists.\n",
      "Downloading file:  stories\\067.txt\n",
      "File  067.txt  already exists.\n",
      "Downloading file:  stories\\068.txt\n",
      "File  068.txt  already exists.\n",
      "Downloading file:  stories\\069.txt\n",
      "File  069.txt  already exists.\n",
      "Downloading file:  stories\\070.txt\n",
      "File  070.txt  already exists.\n",
      "Downloading file:  stories\\071.txt\n",
      "File  071.txt  already exists.\n",
      "Downloading file:  stories\\072.txt\n",
      "File  072.txt  already exists.\n",
      "Downloading file:  stories\\073.txt\n",
      "File  073.txt  already exists.\n",
      "Downloading file:  stories\\074.txt\n",
      "File  074.txt  already exists.\n",
      "Downloading file:  stories\\075.txt\n",
      "File  075.txt  already exists.\n",
      "Downloading file:  stories\\076.txt\n",
      "File  076.txt  already exists.\n",
      "Downloading file:  stories\\077.txt\n",
      "File  077.txt  already exists.\n",
      "Downloading file:  stories\\078.txt\n",
      "File  078.txt  already exists.\n",
      "Downloading file:  stories\\079.txt\n",
      "File  079.txt  already exists.\n",
      "Downloading file:  stories\\080.txt\n",
      "File  080.txt  already exists.\n",
      "Downloading file:  stories\\081.txt\n",
      "File  081.txt  already exists.\n",
      "Downloading file:  stories\\082.txt\n",
      "File  082.txt  already exists.\n",
      "Downloading file:  stories\\083.txt\n",
      "File  083.txt  already exists.\n",
      "Downloading file:  stories\\084.txt\n",
      "File  084.txt  already exists.\n",
      "Downloading file:  stories\\085.txt\n",
      "File  085.txt  already exists.\n",
      "Downloading file:  stories\\086.txt\n",
      "File  086.txt  already exists.\n",
      "Downloading file:  stories\\087.txt\n",
      "File  087.txt  already exists.\n",
      "Downloading file:  stories\\088.txt\n",
      "File  088.txt  already exists.\n",
      "Downloading file:  stories\\089.txt\n",
      "File  089.txt  already exists.\n",
      "Downloading file:  stories\\090.txt\n",
      "File  090.txt  already exists.\n",
      "Downloading file:  stories\\091.txt\n",
      "File  091.txt  already exists.\n",
      "Downloading file:  stories\\092.txt\n",
      "File  092.txt  already exists.\n",
      "Downloading file:  stories\\093.txt\n",
      "File  093.txt  already exists.\n",
      "Downloading file:  stories\\094.txt\n",
      "File  094.txt  already exists.\n",
      "Downloading file:  stories\\095.txt\n",
      "File  095.txt  already exists.\n",
      "Downloading file:  stories\\096.txt\n",
      "File  096.txt  already exists.\n",
      "Downloading file:  stories\\097.txt\n",
      "File  097.txt  already exists.\n",
      "Downloading file:  stories\\098.txt\n",
      "File  098.txt  already exists.\n",
      "Downloading file:  stories\\099.txt\n",
      "File  099.txt  already exists.\n",
      "Downloading file:  stories\\100.txt\n",
      "File  100.txt  already exists.\n"
     ]
    }
   ],
   "source": [
    "url = 'https://www.cs.cmu.edu/~spok/grimmtmp/'\n",
    "\n",
    "# Create a directory if needed\n",
    "dir_name = 'stories'\n",
    "if not os.path.exists(dir_name):\n",
    "    os.mkdir(dir_name)\n",
    "    \n",
    "def maybe_download(filename):\n",
    "  \"\"\"Download a file if not present\"\"\"\n",
    "  print('Downloading file: ', dir_name+ os.sep+filename)\n",
    "    \n",
    "  if not os.path.exists(dir_name+os.sep+filename):\n",
    "    filename, _ = urlretrieve(url + filename, dir_name+os.sep+filename)\n",
    "  else:\n",
    "    print('File ',filename, ' already exists.')\n",
    "  \n",
    "  return filename\n",
    "\n",
    "num_files = 100\n",
    "filenames = [format(i, '03d')+'.txt' for i in range(1,101)]\n",
    "\n",
    "for fn in filenames:\n",
    "    maybe_download(fn)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Reading data\n",
    "Data will be stored in a list of lists where the each list represents a document and document is a list of words. We will then break the text into bigrams"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Processing file stories\\001.txt\n",
      "Data size (Characters) (Document 0) 3667\n",
      "Sample string (Document 0) ['in', ' o', 'ld', 'en', ' t', 'im', 'es', ' w', 'he', 'n ', 'wi', 'sh', 'in', 'g ', 'st', 'il', 'l ', 'he', 'lp', 'ed', ' o', 'ne', ', ', 'th', 'er', 'e ', 'li', 've', 'd ', 'a ', 'ki', 'ng', '\\nw', 'ho', 'se', ' d', 'au', 'gh', 'te', 'rs', ' w', 'er', 'e ', 'al', 'l ', 'be', 'au', 'ti', 'fu', 'l,']\n",
      "\n",
      "Processing file stories\\002.txt\n",
      "Data size (Characters) (Document 1) 4928\n",
      "Sample string (Document 1) ['ha', 'rd', ' b', 'y ', 'a ', 'gr', 'ea', 't ', 'fo', 're', 'st', ' d', 'we', 'lt', ' a', ' w', 'oo', 'd-', 'cu', 'tt', 'er', ' w', 'it', 'h ', 'hi', 's ', 'wi', 'fe', ', ', 'wh', 'o ', 'ha', 'd ', 'an', '\\no', 'nl', 'y ', 'ch', 'il', 'd,', ' a', ' l', 'it', 'tl', 'e ', 'gi', 'rl', ' t', 'hr', 'ee']\n",
      "\n",
      "Processing file stories\\003.txt\n",
      "Data size (Characters) (Document 2) 9745\n",
      "Sample string (Document 2) ['a ', 'ce', 'rt', 'ai', 'n ', 'fa', 'th', 'er', ' h', 'ad', ' t', 'wo', ' s', 'on', 's,', ' t', 'he', ' e', 'ld', 'er', ' o', 'f ', 'wh', 'om', ' w', 'as', ' s', 'ma', 'rt', ' a', 'nd', '\\ns', 'en', 'si', 'bl', 'e,', ' a', 'nd', ' c', 'ou', 'ld', ' d', 'o ', 'ev', 'er', 'yt', 'hi', 'ng', ', ', 'bu']\n",
      "\n",
      "Processing file stories\\004.txt\n",
      "Data size (Characters) (Document 3) 2852\n",
      "Sample string (Document 3) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', 'n ', 'ol', 'd ', 'go', 'at', ' w', 'ho', ' h', 'ad', ' s', 'ev', 'en', ' l', 'it', 'tl', 'e ', 'ki', 'ds', ', ', 'an', 'd\\n', 'lo', 've', 'd ', 'th', 'em', ' w', 'it', 'h ', 'al', 'l ', 'th', 'e ', 'lo', 've', ' o']\n",
      "\n",
      "Processing file stories\\005.txt\n",
      "Data size (Characters) (Document 4) 8189\n",
      "Sample string (Document 4) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', 'n ', 'ol', 'd ', 'ki', 'ng', ' w', 'ho', ' w', 'as', ' i', 'll', ' a', 'nd', ' t', 'ho', 'ug', 'ht', ' t', 'o\\n', 'hi', 'ms', 'el', 'f ', \"'i\", ' a', 'm ', 'ly', 'in', 'g ', 'on', ' w', 'ha', 't ', 'mu', 'st', ' b']\n",
      "\n",
      "Processing file stories\\006.txt\n",
      "Data size (Characters) (Document 5) 4369\n",
      "Sample string (Document 5) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' p', 'ea', 'sa', 'nt', ' w', 'ho', ' h', 'ad', ' d', 'ri', 've', 'n ', 'hi', 's ', 'co', 'w ', 'to', ' t', 'he', ' f', 'ai', 'r,', ' a', 'nd', ' s', 'ol', 'd\\n', 'he', 'r ', 'fo', 'r ', 'se', 've', 'n ', 'ta', 'le', 'rs', '. ', ' o', 'n ', 'th', 'e ']\n",
      "\n",
      "Processing file stories\\007.txt\n",
      "Data size (Characters) (Document 6) 5216\n",
      "Sample string (Document 6) ['th', 'er', 'e ', 'we', 're', ' o', 'nc', 'e ', 'up', 'on', ' a', ' t', 'im', 'e ', 'a ', 'ki', 'ng', ' a', 'nd', ' a', ' q', 'ue', 'en', ' w', 'ho', ' l', 'iv', 'ed', '\\nh', 'ap', 'pi', 'ly', ' t', 'og', 'et', 'he', 'r ', 'an', 'd ', 'ha', 'd ', 'tw', 'el', 've', ' c', 'hi', 'ld', 're', 'n,', ' b']\n",
      "\n",
      "Processing file stories\\008.txt\n",
      "Data size (Characters) (Document 7) 6097\n",
      "Sample string (Document 7) ['li', 'tt', 'le', ' b', 'ro', 'th', 'er', ' t', 'oo', 'k ', 'hi', 's ', 'li', 'tt', 'le', ' s', 'is', 'te', 'r ', 'by', ' t', 'he', ' h', 'an', 'd ', 'an', 'd ', 'sa', 'id', ', ', 'si', 'nc', 'e\\n', 'ou', 'r ', 'mo', 'th', 'er', ' d', 'ie', 'd ', 'we', ' h', 'av', 'e ', 'ha', 'd ', 'no', ' h', 'ap']\n",
      "\n",
      "Processing file stories\\009.txt\n",
      "Data size (Characters) (Document 8) 3699\n",
      "Sample string (Document 8) ['th', 'er', 'e ', 'we', 're', ' o', 'nc', 'e ', 'a ', 'ma', 'n ', 'an', 'd ', 'a ', 'wo', 'ma', 'n ', 'wh', 'o ', 'ha', 'd ', 'lo', 'ng', ' i', 'n ', 'va', 'in', '\\nw', 'is', 'he', 'd ', 'fo', 'r ', 'a ', 'ch', 'il', 'd.', '  ', 'at', ' l', 'en', 'gt', 'h ', 'th', 'e ', 'wo', 'ma', 'n ', 'ho', 'pe']\n",
      "\n",
      "Processing file stories\\010.txt\n",
      "Data size (Characters) (Document 9) 5268\n",
      "Sample string (Document 9) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' m', 'an', ' w', 'ho', 'se', ' w', 'if', 'e ', 'di', 'ed', ', ', 'an', 'd ', 'a ', 'wo', 'ma', 'n ', 'wh', 'os', 'e ', 'hu', 'sb', 'an', 'd\\n', 'di', 'ed', ', ', 'an', 'd ', 'th', 'e ', 'ma', 'n ', 'ha', 'd ', 'a ', 'da', 'ug', 'ht', 'er', ', ', 'an']\n",
      "\n",
      "Processing file stories\\011.txt\n",
      "Data size (Characters) (Document 10) 2377\n",
      "Sample string (Document 10) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' g', 'ir', 'l ', 'wh', 'o ', 'wa', 's ', 'id', 'le', ' a', 'nd', ' w', 'ou', 'ld', ' n', 'ot', ' s', 'pi', 'n,', ' a', 'nd', '\\nl', 'et', ' h', 'er', ' m', 'ot', 'he', 'r ', 'sa', 'y ', 'wh', 'at', ' s', 'he', ' w', 'ou', 'ld', ', ', 'sh', 'e ', 'co']\n",
      "\n",
      "Processing file stories\\012.txt\n",
      "Data size (Characters) (Document 11) 7695\n",
      "Sample string (Document 11) ['ha', 'rd', ' b', 'y ', 'a ', 'gr', 'ea', 't ', 'fo', 're', 'st', ' d', 'we', 'lt', ' a', ' p', 'oo', 'r ', 'wo', 'od', '-c', 'ut', 'te', 'r ', 'wi', 'th', ' h', 'is', ' w', 'if', 'e\\n', 'an', 'd ', 'hi', 's ', 'tw', 'o ', 'ch', 'il', 'dr', 'en', '. ', ' t', 'he', ' b', 'oy', ' w', 'as', ' c', 'al']\n",
      "\n",
      "Processing file stories\\013.txt\n",
      "Data size (Characters) (Document 12) 3665\n",
      "Sample string (Document 12) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' o', 'n ', 'a ', 'ti', 'me', ' a', ' p', 'oo', 'r ', 'ma', 'n,', ' w', 'ho', ' c', 'ou', 'ld', ' n', 'o ', 'lo', 'ng', 'er', '\\ns', 'up', 'po', 'rt', ' h', 'is', ' o', 'nl', 'y ', 'so', 'n.', '  ', 'th', 'en', ' s', 'ai', 'd ', 'th', 'e ', 'so', 'n,', ' d']\n",
      "\n",
      "Processing file stories\\014.txt\n",
      "Data size (Characters) (Document 13) 4178\n",
      "Sample string (Document 13) ['a ', 'lo', 'ng', ' t', 'im', 'e ', 'ag', 'o ', 'th', 'er', 'e ', 'li', 've', 'd ', 'a ', 'ki', 'ng', ' w', 'ho', ' w', 'as', ' f', 'am', 'ed', ' f', 'or', ' h', 'is', ' w', 'is', 'do', 'm\\n', 'th', 'ro', 'ug', 'h ', 'al', 'l ', 'th', 'e ', 'la', 'nd', '. ', ' n', 'ot', 'hi', 'ng', ' w', 'as', ' h']\n",
      "\n",
      "Processing file stories\\015.txt\n",
      "Data size (Characters) (Document 14) 8674\n",
      "Sample string (Document 14) ['on', 'e ', 'su', 'mm', 'er', \"'s\", ' m', 'or', 'ni', 'ng', ' a', ' l', 'it', 'tl', 'e ', 'ta', 'il', 'or', ' w', 'as', ' s', 'it', 'ti', 'ng', ' o', 'n ', 'hi', 's ', 'ta', 'bl', 'e\\n', 'by', ' t', 'he', ' w', 'in', 'do', 'w,', ' h', 'e ', 'wa', 's ', 'in', ' g', 'oo', 'd ', 'sp', 'ir', 'it', 's,']\n",
      "\n",
      "Processing file stories\\016.txt\n",
      "Data size (Characters) (Document 15) 7018\n",
      "Sample string (Document 15) ['\\tc', 'in', 'de', 're', 'll', 'a\\n', 'th', 'e ', 'wi', 'fe', ' o', 'f ', 'a ', 'ri', 'ch', ' m', 'an', ' f', 'el', 'l ', 'si', 'ck', ', ', 'an', 'd ', 'as', ' s', 'he', ' f', 'el', 't ', 'th', 'at', ' h', 'er', ' e', 'nd', '\\nw', 'as', ' d', 'ra', 'wi', 'ng', ' n', 'ea', 'r,', ' s', 'he', ' c', 'al']\n",
      "\n",
      "Processing file stories\\017.txt\n",
      "Data size (Characters) (Document 16) 3039\n",
      "Sample string (Document 16) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' k', 'in', \"g'\", 's ', 'so', 'n ', 'wh', 'o ', 'wa', 's ', 'se', 'iz', 'ed', ' w', 'it', 'h ', 'a ', 'de', 'si', 're', ' t', 'o ', 'tr', 'av', 'el', '\\na', 'bo', 'ut', ' t', 'he', ' w', 'or', 'ld', ', ', 'an', 'd ', 'to', 'ok', ' n', 'o ', 'on', 'e ']\n",
      "\n",
      "Processing file stories\\018.txt\n",
      "Data size (Characters) (Document 17) 3020\n",
      "Sample string (Document 17) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' w', 'id', 'ow', ' w', 'ho', ' h', 'ad', ' t', 'wo', ' d', 'au', 'gh', 'te', 'rs', ' -', ' o', 'ne', ' o', 'f\\n', 'wh', 'om', ' w', 'as', ' p', 're', 'tt', 'y ', 'an', 'd ', 'in', 'du', 'st', 'ri', 'ou', 's,', ' w', 'hi', 'ls', 't ', 'th', 'e ', 'ot']\n",
      "\n",
      "Processing file stories\\019.txt\n",
      "Data size (Characters) (Document 18) 2465\n",
      "Sample string (Document 18) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' m', 'an', ' w', 'ho', ' h', 'ad', ' s', 'ev', 'en', ' s', 'on', 's,', ' a', 'nd', ' s', 'ti', 'll', ' h', 'e ', 'ha', 'd\\n', 'no', ' d', 'au', 'gh', 'te', 'r,', ' h', 'ow', 'ev', 'er', ' m', 'uc', 'h ', 'he', ' w', 'is', 'he', 'd ', 'fo', 'r ', 'on']\n",
      "\n",
      "Processing file stories\\020.txt\n",
      "Data size (Characters) (Document 19) 3703\n",
      "Sample string (Document 19) ['\\tl', 'it', 'tl', 'e ', 're', 'd-', 'ca', 'p\\n', '\\no', 'nc', 'e ', 'up', 'on', ' a', ' t', 'im', 'e ', 'th', 'er', 'e ', 'wa', 's ', 'a ', 'de', 'ar', ' l', 'it', 'tl', 'e ', 'gi', 'rl', ' w', 'ho', ' w', 'as', ' l', 'ov', 'ed', '\\nb', 'y ', 'ev', 'er', 'y ', 'on', 'e ', 'wh', 'o ', 'lo', 'ok', 'ed']\n",
      "\n",
      "Processing file stories\\021.txt\n",
      "Data size (Characters) (Document 20) 1924\n",
      "Sample string (Document 20) ['in', ' a', ' c', 'er', 'ta', 'in', ' c', 'ou', 'nt', 'ry', ' t', 'he', 're', ' w', 'as', ' o', 'nc', 'e ', 'gr', 'ea', 't ', 'la', 'me', 'nt', 'at', 'io', 'n ', 'ov', 'er', ' a', '\\nw', 'il', 'd ', 'bo', 'ar', ' t', 'ha', 't ', 'la', 'id', ' w', 'as', 'te', ' t', 'he', ' f', 'ar', 'me', \"r'\", 's ']\n",
      "\n",
      "Processing file stories\\022.txt\n",
      "Data size (Characters) (Document 21) 6561\n",
      "Sample string (Document 21) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' p', 'oo', 'r ', 'wo', 'ma', 'n ', 'wh', 'o ', 'ga', 've', ' b', 'ir', 'th', ' t', 'o ', 'a ', 'li', 'tt', 'le', ' s', 'on', ',\\n', 'an', 'd ', 'as', ' h', 'e ', 'ca', 'me', ' i', 'nt', 'o ', 'th', 'e ', 'wo', 'rl', 'd ', 'wi', 'th', ' a', ' c', 'au']\n",
      "\n",
      "Processing file stories\\023.txt\n",
      "Data size (Characters) (Document 22) 5956\n",
      "Sample string (Document 22) ['a ', 'ce', 'rt', 'ai', 'n ', 'mi', 'll', 'er', ' h', 'ad', ' l', 'it', 'tl', 'e ', 'by', ' l', 'it', 'tl', 'e ', 'fa', 'll', 'en', ' i', 'nt', 'o ', 'po', 've', 'rt', 'y,', ' a', 'nd', '\\nh', 'ad', ' n', 'ot', 'hi', 'ng', ' l', 'ef', 't ', 'bu', 't ', 'hi', 's ', 'mi', 'll', ' a', 'nd', ' a', ' l']\n",
      "\n",
      "Processing file stories\\024.txt\n",
      "Data size (Characters) (Document 23) 2529\n",
      "Sample string (Document 23) ['th', 'e ', 'mo', 'th', 'er', ' o', 'f ', 'ha', 'ns', ' s', 'ai', 'd,', ' w', 'hi', 'th', 'er', ' a', 'wa', 'y,', ' h', 'an', 's.', '  ', 'ha', 'ns', ' a', 'ns', 'we', 're', 'd,', ' t', 'o\\n', 'gr', 'et', 'el', '. ', ' b', 'eh', 'av', 'e ', 'we', 'll', ', ', 'ha', 'ns', '. ', ' o', 'h,', ' i', \"'l\"]\n",
      "\n",
      "Processing file stories\\025.txt\n",
      "Data size (Characters) (Document 24) 2416\n",
      "Sample string (Document 24) ['an', ' a', 'ge', 'd ', 'co', 'un', 't ', 'on', 'ce', ' l', 'iv', 'ed', ' i', 'n ', 'sw', 'it', 'ze', 'rl', 'an', 'd,', ' w', 'ho', ' h', 'ad', ' a', 'n ', 'on', 'ly', ' s', 'on', ',\\n', 'bu', 't ', 'he', ' w', 'as', ' s', 'tu', 'pi', 'd,', ' a', 'nd', ' c', 'ou', 'ld', ' l', 'ea', 'rn', ' n', 'ot']\n",
      "\n",
      "Processing file stories\\026.txt\n",
      "Data size (Characters) (Document 25) 3369\n",
      "Sample string (Document 25) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' m', 'an', ' w', 'ho', ' h', 'ad', ' a', ' d', 'au', 'gh', 'te', 'r ', 'wh', 'o ', 'wa', 's ', 'ca', 'll', 'ed', ' c', 'le', 've', 'r\\n', 'el', 'si', 'e.', '  ', 'an', 'd ', 'wh', 'en', ' s', 'he', ' h', 'ad', ' g', 'ro', 'wn', ' u', 'p ', 'he', 'r ']\n",
      "\n",
      "Processing file stories\\027.txt\n",
      "Data size (Characters) (Document 26) 10013\n",
      "Sample string (Document 26) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' t', 'ai', 'lo', 'r ', 'wh', 'o ', 'ha', 'd ', 'th', 're', 'e ', 'so', 'ns', ', ', 'an', 'd\\n', 'on', 'ly', ' o', 'ne', ' g', 'oa', 't.', '  ', 'bu', 't ', 'as', ' t', 'he', ' g', 'oa', 't ', 'su', 'pp', 'or', 'te']\n",
      "\n",
      "Processing file stories\\028.txt\n",
      "Data size (Characters) (Document 27) 5788\n",
      "Sample string (Document 27) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' p', 'oo', 'r ', 'pe', 'as', 'an', 't ', 'wh', 'o ', 'sa', 't ', 'in', ' t', 'he', ' e', 've', 'ni', 'ng', ' b', 'y ', 'th', 'e\\n', 'he', 'ar', 'th', ' a', 'nd', ' p', 'ok', 'ed', ' t', 'he', ' f', 'ir', 'e,', ' a', 'nd', ' h', 'is', ' w', 'if', 'e ']\n",
      "\n",
      "Processing file stories\\029.txt\n",
      "Data size (Characters) (Document 28) 1335\n",
      "Sample string (Document 28) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' p', 'oo', 'r ', 'se', 'rv', 'an', 't-', 'gi', 'rl', ' w', 'ho', ' w', 'as', ' i', 'nd', 'us', 'tr', 'io', 'us', ' a', 'nd', ' c', 'le', 'an', 'ly', '\\na', 'nd', ' s', 'we', 'pt', ' t', 'he', ' h', 'ou', 'se', ' e', 've', 'ry', ' d', 'ay', ', ', 'an']\n",
      "\n",
      "Processing file stories\\030.txt\n",
      "Data size (Characters) (Document 29) 3591\n",
      "Sample string (Document 29) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' m', 'il', 'le', 'r,', ' w', 'ho', ' h', 'ad', ' a', ' b', 'ea', 'ut', 'if', 'ul', '\\nd', 'au', 'gh', 'te', 'r,', ' a', 'nd', ' a', 's ', 'sh', 'e ', 'wa', 's ', 'gr', 'ow', 'n ', 'up', ', ', 'he', ' w', 'is', 'he']\n",
      "\n",
      "Processing file stories\\031.txt\n",
      "Data size (Characters) (Document 30) 1624\n",
      "Sample string (Document 30) ['a ', 'po', 'or', ' m', 'an', ' h', 'ad', ' s', 'o ', 'ma', 'ny', ' c', 'hi', 'ld', 're', 'n ', 'th', 'at', ' h', 'e ', 'ha', 'd ', 'al', 're', 'ad', 'y ', 'as', 'ke', 'd\\n', 'ev', 'er', 'yo', 'ne', ' i', 'n ', 'th', 'e ', 'wo', 'rl', 'd ', 'to', ' b', 'e ', 'go', 'df', 'at', 'he', 'r,', ' a', 'nd']\n",
      "\n",
      "Processing file stories\\032.txt\n",
      "Data size (Characters) (Document 31) 758\n",
      "Sample string (Document 31) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' l', 'it', 'tl', 'e ', 'gi', 'rl', ' w', 'ho', ' w', 'as', ' o', 'bs', 'ti', 'na', 'te', ' a', 'nd', ' i', 'nq', 'ui', 'si', 'ti', 've', ',\\n', 'an', 'd ', 'wh', 'en', ' h', 'er', ' p', 'ar', 'en', 'ts', ' t', 'ol', 'd ', 'he', 'r ', 'to', ' d', 'o ']\n",
      "\n",
      "Processing file stories\\033.txt\n",
      "Data size (Characters) (Document 32) 3121\n",
      "Sample string (Document 32) ['a ', 'po', 'or', ' m', 'an', ' h', 'ad', ' t', 'we', 'lv', 'e ', 'ch', 'il', 'dr', 'en', ' a', 'nd', ' w', 'as', ' f', 'or', 'ce', 'd ', 'to', ' w', 'or', 'k ', 'ni', 'gh', 't ', 'an', 'd\\n', 'da', 'y ', 'to', ' g', 'iv', 'e ', 'th', 'em', ' e', 've', 'n ', 'br', 'ea', 'd.', '  ', 'wh', 'en', ' t']\n",
      "\n",
      "Processing file stories\\034.txt\n",
      "Data size (Characters) (Document 33) 4192\n",
      "Sample string (Document 33) ['a ', 'ce', 'rt', 'ai', 'n ', 'ta', 'il', 'or', ' h', 'ad', ' a', ' s', 'on', ', ', 'wh', 'o ', 'ha', 'pp', 'en', 'ed', ' t', 'o ', 'be', ' s', 'ma', 'll', ', ', 'an', 'd\\n', 'no', ' b', 'ig', 'ge', 'r ', 'th', 'an', ' a', ' t', 'hu', 'mb', ', ', 'an', 'd ', 'on', ' t', 'hi', 's ', 'ac', 'co', 'un']\n",
      "\n",
      "Processing file stories\\035.txt\n",
      "Data size (Characters) (Document 34) 3650\n",
      "Sample string (Document 34) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' w', 'iz', 'ar', 'd ', 'wh', 'o ', 'us', 'ed', ' t', 'o ', 'ta', 'ke', ' t', 'he', ' f', 'or', 'm ', 'of', ' a', ' p', 'oo', 'r\\n', 'ma', 'n,', ' a', 'nd', ' w', 'en', 't ', 'to', ' h', 'ou', 'se', 's ', 'an', 'd ', 'be', 'gg', 'ed', ', ', 'an', 'd ']\n",
      "\n",
      "Processing file stories\\036.txt\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data size (Characters) (Document 35) 8219\n",
      "Sample string (Document 35) ['it', ' i', 's ', 'no', 'w ', 'lo', 'ng', ' a', 'go', ', ', 'qu', 'it', 'e ', 'tw', 'o ', 'th', 'ou', 'sa', 'nd', ' y', 'ea', 'rs', ', ', 'si', 'nc', 'e ', 'th', 'er', 'e ', 'wa', 's\\n', 'a ', 'ri', 'ch', ' m', 'an', ' w', 'ho', ' h', 'ad', ' a', ' b', 'ea', 'ut', 'if', 'ul', ' a', 'nd', ' p', 'io']\n",
      "\n",
      "Processing file stories\\037.txt\n",
      "Data size (Characters) (Document 36) 2151\n",
      "Sample string (Document 36) ['a ', 'fa', 'rm', 'er', ' o', 'nc', 'e ', 'ha', 'd ', 'a ', 'fa', 'it', 'hf', 'ul', ' d', 'og', ' c', 'al', 'le', 'd ', 'su', 'lt', 'an', ', ', 'wh', 'o ', 'ha', 'd ', 'gr', 'ow', 'n\\n', 'ol', 'd,', ' a', 'nd', ' l', 'os', 't ', 'al', 'l ', 'hi', 's ', 'te', 'et', 'h,', ' s', 'o ', 'th', 'at', ' h']\n",
      "\n",
      "Processing file stories\\038.txt\n",
      "Data size (Characters) (Document 37) 5129\n",
      "Sample string (Document 37) ['on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ', ', 'a ', 'ce', 'rt', 'ai', 'n ', 'ki', 'ng', ' w', 'as', ' h', 'un', 'ti', 'ng', ' i', 'n ', 'a ', 'gr', 'ea', 't ', 'fo', 're', 'st', ',\\n', 'an', 'd ', 'he', ' c', 'ha', 'se', 'd ', 'a ', 'wi', 'ld', ' b', 'ea', 'st', ' s', 'o ', 'ea', 'ge', 'rl']\n",
      "\n",
      "Processing file stories\\039.txt\n",
      "Data size (Characters) (Document 38) 3472\n",
      "Sample string (Document 38) ['\\tb', 'ri', 'ar', '-r', 'os', 'e\\n', '\\na', ' l', 'on', 'g ', 'ti', 'me', ' a', 'go', ' t', 'he', 're', ' w', 'er', 'e ', 'a ', 'ki', 'ng', ' a', 'nd', ' q', 'ue', 'en', ' w', 'ho', ' s', 'ai', 'd ', 'ev', 'er', 'y\\n', 'da', 'y,', ' a', 'h,', ' i', 'f ', 'on', 'ly', ' w', 'e ', 'ha', 'd ', 'a ', 'ch']\n",
      "\n",
      "Processing file stories\\040.txt\n",
      "Data size (Characters) (Document 39) 2490\n",
      "Sample string (Document 39) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' f', 'or', 'es', 'te', 'r ', 'wh', 'o ', 'we', 'nt', ' i', 'nt', 'o ', 'th', 'e ', 'fo', 're', 'st', ' t', 'o ', 'hu', 'nt', ',\\n', 'an', 'd ', 'as', ' h', 'e ', 'en', 'te', 're', 'd ', 'it', ' h', 'e ', 'he', 'ar', 'd ', 'a ', 'so', 'un', 'd ', 'of']\n",
      "\n",
      "Processing file stories\\041.txt\n",
      "Data size (Characters) (Document 40) 4273\n",
      "Sample string (Document 40) ['a ', 'ki', 'ng', ' h', 'ad', ' a', ' d', 'au', 'gh', 'te', 'r ', 'wh', 'o ', 'wa', 's ', 'be', 'au', 'ti', 'fu', 'l ', 'be', 'yo', 'nd', ' a', 'll', ' m', 'ea', 'su', 're', ',\\n', 'bu', 't ', 'so', ' p', 'ro', 'ud', ' a', 'nd', ' h', 'au', 'gh', 'ty', ' w', 'it', 'ha', 'l ', 'th', 'at', ' n', 'o ']\n",
      "\n",
      "Processing file stories\\042.txt\n",
      "Data size (Characters) (Document 41) 8327\n",
      "Sample string (Document 41) ['\\ts', 'no', 'w ', 'wh', 'it', 'e ', 'an', 'd ', 'th', 'e ', 'se', 've', 'n ', 'dw', 'ar', 'fs', '\\n\\n', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' i', 'n ', 'th', 'e ', 'mi', 'dd', 'le', ' o', 'f ', 'wi', 'nt', 'er', ', ', 'wh', 'en', ' t', 'he', ' f', 'la', 'ke', 's ', 'of', '\\ns', 'no', 'w ']\n",
      "\n",
      "Processing file stories\\043.txt\n",
      "Data size (Characters) (Document 42) 6128\n",
      "Sample string (Document 42) ['th', 'er', 'e ', 'we', 're', ' o', 'nc', 'e ', 'th', 're', 'e ', 'br', 'ot', 'he', 'rs', ' w', 'ho', ' h', 'ad', ' f', 'al', 'le', 'n ', 'de', 'ep', 'er', ' a', 'nd', ' d', 'ee', 'pe', 'r ', 'in', 'to', '\\np', 'ov', 'er', 'ty', ', ', 'an', 'd ', 'at', ' l', 'as', 't ', 'th', 'ei', 'r ', 'ne', 'ed']\n",
      "\n",
      "Processing file stories\\044.txt\n",
      "Data size (Characters) (Document 43) 2819\n",
      "Sample string (Document 43) ['\\tr', 'um', 'pe', 'ls', 'ti', 'lt', 'sk', 'in', '\\n\\n', 'on', 'ce', ' t', 'he', 're', ' w', 'as', ' a', ' m', 'il', 'le', 'r ', 'wh', 'o ', 'wa', 's ', 'po', 'or', ', ', 'bu', 't ', 'wh', 'o ', 'ha', 'd ', 'a ', 'be', 'au', 'ti', 'fu', 'l\\n', 'da', 'ug', 'ht', 'er', '. ', ' n', 'ow', ' i', 't ', 'ha']\n",
      "\n",
      "Processing file stories\\045.txt\n",
      "Data size (Characters) (Document 44) 3822\n",
      "Sample string (Document 44) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' w', 'om', 'an', ' w', 'ho', ' w', 'as', ' a', ' r', 'ea', 'l ', 'wi', 'tc', 'h ', 'an', 'd ', 'ha', 'd ', 'tw', 'o\\n', 'da', 'ug', 'ht', 'er', 's,', ' o', 'ne', ' u', 'gl', 'y ', 'an', 'd ', 'wi', 'ck', 'ed', ', ']\n",
      "\n",
      "Processing file stories\\046.txt\n",
      "Data size (Characters) (Document 45) 7772\n",
      "Sample string (Document 45) ['in', ' o', 'ld', 'en', ' t', 'im', 'es', ' t', 'he', 're', ' w', 'as', ' a', ' k', 'in', 'g,', ' w', 'ho', ' h', 'ad', ' b', 'eh', 'in', 'd ', 'hi', 's ', 'pa', 'la', 'ce', ' a', '\\nb', 'ea', 'ut', 'if', 'ul', ' p', 'le', 'as', 'ur', 'e-', 'ga', 'rd', 'en', ' i', 'n ', 'wh', 'ic', 'h ', 'th', 'er']\n",
      "\n",
      "Processing file stories\\047.txt\n",
      "Data size (Characters) (Document 46) 22158\n",
      "Sample string (Document 46) ['th', 'er', 'e ', 'we', 're', ' o', 'nc', 'e ', 'up', 'on', ' a', ' t', 'im', 'e ', 'tw', 'o ', 'br', 'ot', 'he', 'rs', ', ', 'on', 'e ', 'ri', 'ch', ' a', 'nd', ' t', 'he', ' o', 'th', 'er', '\\np', 'oo', 'r.', '  ', 'th', 'e ', 'ri', 'ch', ' o', 'ne', ' w', 'as', ' a', ' g', 'ol', 'ds', 'mi', 'th']\n",
      "\n",
      "Processing file stories\\048.txt\n",
      "Data size (Characters) (Document 47) 2169\n",
      "Sample string (Document 47) ['tw', 'o ', 'ki', 'ng', \"s'\", ' s', 'on', 's ', 'on', 'ce', ' w', 'en', 't ', 'ou', 't ', 'in', ' s', 'ea', 'rc', 'h ', 'of', ' a', 'dv', 'en', 'tu', 're', 's,', ' a', 'nd', ' f', 'el', 'l ', 'in', 'to', '\\na', ' w', 'il', 'd,', ' d', 'is', 'or', 'de', 'rl', 'y ', 'wa', 'y ', 'of', ' l', 'iv', 'in']\n",
      "\n",
      "Processing file stories\\049.txt\n",
      "Data size (Characters) (Document 48) 2822\n",
      "Sample string (Document 48) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' k', 'in', 'g ', 'wh', 'o ', 'ha', 'd ', 'th', 're', 'e ', 'so', 'ns', ', ', 'of', ' w', 'ho', 'm ', 'tw', 'o\\n', 'we', 're', ' c', 'le', 've', 'r ', 'an', 'd ', 'wi', 'se', ', ', 'bu', 't ', 'th', 'e ', 'th', 'ir']\n",
      "\n",
      "Processing file stories\\050.txt\n",
      "Data size (Characters) (Document 49) 4034\n",
      "Sample string (Document 49) ['th', 'er', 'e ', 'wa', 's ', 'a ', 'ma', 'n ', 'wh', 'o ', 'ha', 'd ', 'th', 're', 'e ', 'so', 'ns', ', ', 'th', 'e ', 'yo', 'un', 'ge', 'st', ' o', 'f ', 'wh', 'om', ' w', 'as', ' c', 'al', 'le', 'd\\n', 'du', 'mm', 'li', 'ng', ', ', 'an', 'd ', 'wa', 's ', 'de', 'sp', 'is', 'ed', ', ', 'mo', 'ck']\n",
      "\n",
      "Processing file stories\\051.txt\n",
      "Data size (Characters) (Document 50) 5608\n",
      "Sample string (Document 50) ['\\ta', 'll', 'er', 'le', 'ir', 'au', 'h\\n', '\\nt', 'he', 're', ' w', 'as', ' o', 'nc', 'e ', 'up', 'on', ' a', ' t', 'im', 'e ', 'a ', 'ki', 'ng', ' w', 'ho', ' h', 'ad', ' a', ' w', 'if', 'e ', 'wi', 'th', ' g', 'ol', 'de', 'n ', 'ha', 'ir', ',\\n', 'an', 'd ', 'sh', 'e ', 'wa', 's ', 'so', ' b', 'ea']\n",
      "\n",
      "Processing file stories\\052.txt\n",
      "Data size (Characters) (Document 51) 1287\n",
      "Sample string (Document 51) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' w', 'om', 'an', ' a', 'nd', ' h', 'er', ' d', 'au', 'gh', 'te', 'r ', 'wh', 'o ', 'li', 've', 'd ', 'in', ' a', '\\np', 're', 'tt', 'y ', 'ga', 'rd', 'en', ' w', 'it', 'h ', 'ca', 'bb', 'ag', 'es', '. ', ' a', 'nd', ' a', ' l', 'it', 'tl', 'e ', 'ha']\n",
      "\n",
      "Processing file stories\\053.txt\n",
      "Data size (Characters) (Document 52) 2841\n",
      "Sample string (Document 52) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' k', 'in', \"g'\", 's ', 'so', 'n ', 'wh', 'o ', 'ha', 'd ', 'a ', 'br', 'id', 'e ', 'wh', 'om', ' h', 'e ', 'lo', 've', 'd ', 've', 'ry', ' m', 'uc', 'h.', '\\na', 'nd', ' w', 'he', 'n ', 'he', ' w', 'as', ' s', 'it', 'ti', 'ng', ' b', 'es', 'id', 'e ']\n",
      "\n",
      "Processing file stories\\054.txt\n",
      "Data size (Characters) (Document 53) 1922\n",
      "Sample string (Document 53) ['ha', 'ns', ' w', 'is', 'he', 'd ', 'to', ' p', 'ut', ' h', 'is', ' s', 'on', ' t', 'o ', 'le', 'ar', 'n ', 'a ', 'tr', 'ad', 'e,', ' s', 'o ', 'he', ' w', 'en', 't ', 'in', 'to', ' t', 'he', '\\nc', 'hu', 'rc', 'h ', 'an', 'd ', 'pr', 'ay', 'ed', ' t', 'o ', 'ou', 'r ', 'lo', 'rd', ' g', 'od', ' t']\n",
      "\n",
      "Processing file stories\\055.txt\n",
      "Data size (Characters) (Document 54) 2573\n",
      "Sample string (Document 54) ['a ', 'fa', 'th', 'er', ' o', 'nc', 'e ', 'ca', 'll', 'ed', ' h', 'is', ' t', 'hr', 'ee', ' s', 'on', 's ', 'be', 'fo', 're', ' h', 'im', ', ', 'an', 'd ', 'he', ' g', 'av', 'e ', 'to', ' t', 'he', '\\nf', 'ir', 'st', ' a', ' c', 'oc', 'k,', ' t', 'o ', 'th', 'e ', 'se', 'co', 'nd', ' a', ' s', 'cy']\n",
      "\n",
      "Processing file stories\\056.txt\n",
      "Data size (Characters) (Document 55) 5285\n",
      "Sample string (Document 55) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' m', 'an', ' w', 'ho', ' u', 'nd', 'er', 'st', 'oo', 'd ', 'al', 'l ', 'ki', 'nd', 's ', 'of', ' a', 'rt', 's.', '  ', 'he', ' s', 'er', 've', 'd ', 'in', '\\nw', 'ar', ', ', 'an', 'd ', 'be', 'ha', 've', 'd ', 'we', 'll', ' a', 'nd', ' b', 'ra', 've']\n",
      "\n",
      "Processing file stories\\057.txt\n",
      "Data size (Characters) (Document 56) 971\n",
      "Sample string (Document 56) ['th', 'e ', 'sh', 'e-', 'wo', 'lf', ' b', 'ro', 'ug', 'ht', ' i', 'nt', 'o ', 'th', 'e ', 'wo', 'rl', 'd ', 'a ', 'yo', 'un', 'g ', 'on', 'e,', ' a', 'nd', ' i', 'nv', 'it', 'ed', ' t', 'he', ' f', 'ox', '\\nt', 'o ', 'be', ' g', 'od', 'fa', 'th', 'er', '. ', ' a', 'ft', 'er', ' a', 'll', ', ', 'he']\n",
      "\n",
      "Processing file stories\\058.txt\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data size (Characters) (Document 57) 4538\n",
      "Sample string (Document 57) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' q', 'ue', 'en', ' t', 'o ', 'wh', 'om', ' g', 'od', ' h', 'ad', ' g', 'iv', 'en', ' n', 'o ', 'ch', 'il', 'dr', 'en', '.\\n', 'ev', 'er', 'y ', 'mo', 'rn', 'in', 'g ', 'sh', 'e ', 'we', 'nt', ' i', 'nt', 'o ', 'th']\n",
      "\n",
      "Processing file stories\\059.txt\n",
      "Data size (Characters) (Document 58) 636\n",
      "Sample string (Document 58) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' v', 'er', 'y ', 'ol', 'd ', 'ma', 'n,', ' w', 'ho', 'se', ' e', 'ye', 's ', 'ha', 'd ', 'be', 'co', 'me', ' d', 'im', ', ', 'hi', 's ', 'ea', 'rs', '\\nd', 'ul', 'l ', 'of', ' h', 'ea', 'ri', 'ng', ', ', 'hi', 's ', 'kn', 'ee', 's ', 'tr', 'em', 'bl']\n",
      "\n",
      "Processing file stories\\060.txt\n",
      "Data size (Characters) (Document 59) 786\n",
      "Sample string (Document 59) ['a ', 'li', 'tt', 'le', ' b', 'ro', 'th', 'er', ' a', 'nd', ' s', 'is', 'te', 'r ', 'we', 're', ' o', 'nc', 'e ', 'pl', 'ay', 'in', 'g ', 'by', ' a', ' w', 'el', 'l,', ' a', 'nd', ' w', 'hi', 'le', '\\nt', 'he', 'y ', 'we', 're', ' t', 'hu', 's ', 'pl', 'ay', 'in', 'g,', ' t', 'he', 'y ', 'bo', 'th']\n",
      "\n",
      "Processing file stories\\061.txt\n",
      "Data size (Characters) (Document 60) 10687\n",
      "Sample string (Document 60) ['th', 'er', 'e ', 'wa', 's ', 'on', 'e ', 'up', 'on', ' a', ' t', 'im', 'e ', 'a ', 'gr', 'ea', 't ', 'wa', 'r,', ' a', 'nd', ' w', 'he', 'n ', 'it', ' c', 'am', 'e ', 'to', ' a', 'n ', 'en', 'd,', '\\nm', 'an', 'y ', 'so', 'ld', 'ie', 'rs', ' w', 'er', 'e ', 'di', 'sc', 'ha', 'rg', 'ed', '. ', ' t']\n",
      "\n",
      "Processing file stories\\062.txt\n",
      "Data size (Characters) (Document 61) 5105\n",
      "Sample string (Document 61) ['ha', 'ns', ' h', 'ad', ' s', 'er', 've', 'd ', 'hi', 's ', 'ma', 'st', 'er', ' f', 'or', ' s', 'ev', 'en', ' y', 'ea', 'rs', ', ', 'so', ' h', 'e ', 'sa', 'id', ' t', 'o ', 'hi', 'm,', '\\nm', 'as', 'te', 'r,', ' m', 'y ', 'ti', 'me', ' i', 's ', 'up', ', ', 'no', 'w ', 'i ', 'sh', 'ou', 'ld', ' b']\n",
      "\n",
      "Processing file stories\\063.txt\n",
      "Data size (Characters) (Document 62) 1127\n",
      "Sample string (Document 62) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' y', 'ou', 'ng', ' p', 'ea', 'sa', 'nt', ' n', 'am', 'ed', ' h', 'an', 's,', ' w', 'ho', 'se', ' u', 'nc', 'le', '\\nw', 'an', 'te', 'd ', 'to', ' f', 'in', 'd ', 'hi', 'm ', 'a ', 'ri', 'ch', ' w', 'if', 'e.', '  ']\n",
      "\n",
      "Processing file stories\\064.txt\n",
      "Data size (Characters) (Document 63) 4981\n",
      "Sample string (Document 63) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' p', 'oo', 'r ', 'ma', 'n ', 'an', 'd ', 'a ', 'po', 'or', ' w', 'om', 'an', ' w', 'ho', ' h', 'ad', ' n', 'ot', 'hi', 'ng', ' b', 'ut', ' a', '\\nl', 'it', 'tl', 'e ', 'co', 'tt', 'ag', 'e,', ' a', 'nd', ' w', 'ho', ' e', 'ar', 'ne', 'd ', 'th', 'ei']\n",
      "\n",
      "Processing file stories\\065.txt\n",
      "Data size (Characters) (Document 64) 6006\n",
      "Sample string (Document 64) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' m', 'an', ' w', 'ho', ' w', 'as', ' a', 'bo', 'ut', ' t', 'o ', 'se', 't ', 'ou', 't ', 'on', ' a', ' l', 'on', 'g\\n', 'jo', 'ur', 'ne', 'y,', ' a', 'nd', ' o', 'n ', 'pa', 'rt', 'in', 'g ', 'he', ' a', 'sk', 'ed']\n",
      "\n",
      "Processing file stories\\066.txt\n",
      "Data size (Characters) (Document 65) 5900\n",
      "Sample string (Document 65) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', 'n ', 'ol', 'd ', 'qu', 'ee', 'n ', 'wh', 'os', 'e ', 'hu', 'sb', 'an', 'd ', 'ha', 'd ', 'be', 'en', ' d', 'ea', 'd\\n', 'fo', 'r ', 'ma', 'ny', ' y', 'ea', 'rs', ', ', 'an', 'd ', 'sh', 'e ', 'ha', 'd ', 'a ', 'be']\n",
      "\n",
      "Processing file stories\\067.txt\n",
      "Data size (Characters) (Document 66) 7837\n",
      "Sample string (Document 66) ['on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' c', 'ou', 'nt', 'ry', 'ma', 'n ', 'ha', 'd ', 'a ', 'so', 'n ', 'wh', 'o ', 'wa', 's ', 'as', ' b', 'ig', ' a', 's ', 'a ', 'th', 'um', 'b,', '\\na', 'nd', ' d', 'id', ' n', 'ot', ' b', 'ec', 'om', 'e ', 'an', 'y ', 'bi', 'gg', 'er', ', ', 'an']\n",
      "\n",
      "Processing file stories\\068.txt\n",
      "Data size (Characters) (Document 67) 4717\n",
      "Sample string (Document 67) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' r', 'ic', 'h ', 'ki', 'ng', ' w', 'ho', ' h', 'ad', ' t', 'hr', 'ee', ' d', 'au', 'gh', 'te', 'rs', ', ', 'wh', 'o\\n', 'da', 'il', 'y ', 'we', 'nt', ' t', 'o ', 'wa', 'lk', ' i', 'n ', 'th', 'e ', 'pa', 'la', 'ce']\n",
      "\n",
      "Processing file stories\\069.txt\n",
      "Data size (Characters) (Document 68) 6233\n",
      "Sample string (Document 68) ['th', 'er', 'e ', 'wa', 's ', 'a ', 'ce', 'rt', 'ai', 'n ', 'me', 'rc', 'ha', 'nt', ' w', 'ho', ' h', 'ad', ' t', 'wo', ' c', 'hi', 'ld', 're', 'n,', ' a', ' b', 'oy', ' a', 'nd', ' a', ' g', 'ir', 'l,', '\\nt', 'he', 'y ', 'we', 're', ' b', 'ot', 'h ', 'yo', 'un', 'g,', ' a', 'nd', ' c', 'ou', 'ld']\n",
      "\n",
      "Processing file stories\\070.txt\n",
      "Data size (Characters) (Document 69) 5664\n",
      "Sample string (Document 69) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' q', 'ue', 'en', ' w', 'ho', ' h', 'ad', ' a', ' l', 'it', 'tl', 'e ', 'da', 'ug', 'ht', 'er', ' w', 'ho', '\\nw', 'as', ' s', 'ti', 'll', ' s', 'o ', 'yo', 'un', 'g ', 'th', 'at', ' s', 'he', ' h', 'ad', ' t', 'o ']\n",
      "\n",
      "Processing file stories\\071.txt\n",
      "Data size (Characters) (Document 70) 3569\n",
      "Sample string (Document 70) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' p', 'oo', 'r ', 'pe', 'as', 'an', 't ', 'wh', 'o ', 'ha', 'd ', 'no', ' l', 'an', 'd,', ' b', 'ut', ' o', 'nl', 'y ', 'a ', 'sm', 'al', 'l\\n', 'ho', 'us', 'e,', ' a', 'nd', ' o', 'ne', ' d', 'au', 'gh', 'te', 'r.', '  ', 'th', 'en', ' s', 'ai', 'd ']\n",
      "\n",
      "Processing file stories\\072.txt\n",
      "Data size (Characters) (Document 71) 3793\n",
      "Sample string (Document 71) ['ab', 'ou', 't ', 'a ', 'th', 'ou', 'sa', 'nd', ' o', 'r ', 'mo', 're', ' y', 'ea', 'rs', ' a', 'go', ', ', 'th', 'er', 'e ', 'we', 're', ' i', 'n ', 'th', 'is', '\\nc', 'ou', 'nt', 'ry', ' n', 'ot', 'hi', 'ng', ' b', 'ut', ' s', 'ma', 'll', ' k', 'in', 'gs', ', ', 'an', 'd ', 'on', 'e ', 'of', ' t']\n",
      "\n",
      "Processing file stories\\073.txt\n",
      "Data size (Characters) (Document 72) 5980\n",
      "Sample string (Document 72) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' k', 'in', 'g ', 'wh', 'o ', 'ha', 'd ', 'an', ' i', 'll', 'ne', 'ss', ', ', 'an', 'd ', 'no', ' o', 'ne', ' b', 'el', 'ie', 've', 'd ', 'th', 'at', ' h', 'e\\n', 'wo', 'ul', 'd ', 'co', 'me', ' o', 'ut', ' o', 'f ', 'it', ' w', 'it', 'h ', 'hi', 's ']\n",
      "\n",
      "Processing file stories\\074.txt\n",
      "Data size (Characters) (Document 73) 4518\n",
      "Sample string (Document 73) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' p', 'oo', 'r ', 'wo', 'od', 'cu', 'tt', 'er', ' w', 'ho', ' t', 'oi', 'le', 'd ', 'fr', 'om', ' e', 'ar', 'ly', '\\nm', 'or', 'ni', 'ng', ' t', 'il', 'l ', 'la', 'te', ' a', 't ', 'ni', 'gh', 't.', '  ', 'wh', 'en', ' a', 't ', 'la', 'st', ' h', 'e ']\n",
      "\n",
      "Processing file stories\\075.txt\n",
      "Data size (Characters) (Document 74) 3247\n",
      "Sample string (Document 74) ['a ', 'di', 'sc', 'ha', 'rg', 'ed', ' s', 'ol', 'di', 'er', ' h', 'ad', ' n', 'ot', 'hi', 'ng', ' t', 'o ', 'li', 've', ' o', 'n,', ' a', 'nd', ' d', 'id', ' n', 'ot', ' k', 'no', 'w ', 'ho', 'w ', 'to', '\\nm', 'ak', 'e ', 'hi', 's ', 'wa', 'y.', '  ', 'so', ' h', 'e ', 'we', 'nt', ' o', 'ut', ' i']\n",
      "\n",
      "Processing file stories\\076.txt\n",
      "Data size (Characters) (Document 75) 5130\n",
      "Sample string (Document 75) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' y', 'ou', 'ng', ' f', 'el', 'lo', 'w ', 'wh', 'o ', 'en', 'li', 'st', 'ed', ' a', 's ', 'a ', 'so', 'ld', 'ie', 'r,', ' c', 'on', 'du', 'ct', 'ed', '\\nh', 'im', 'se', 'lf', ' b', 'ra', 've', 'ly', ', ', 'an', 'd ', 'wa', 's ', 'al', 'wa', 'ys', ' t']\n",
      "\n",
      "Processing file stories\\077.txt\n",
      "Data size (Characters) (Document 76) 2401\n",
      "Sample string (Document 76) ['on', 'ce', ' i', 'n ', 'su', 'mm', 'er', '-t', 'im', 'e ', 'th', 'e ', 'be', 'ar', ' a', 'nd', ' t', 'he', ' w', 'ol', 'f ', 'we', 're', ' w', 'al', 'ki', 'ng', ' i', 'n ', 'th', 'e ', 'fo', 're', 'st', ',\\n', 'an', 'd ', 'th', 'e ', 'be', 'ar', ' h', 'ea', 'rd', ' a', ' b', 'ir', 'd ', 'si', 'ng']\n",
      "\n",
      "Processing file stories\\078.txt\n",
      "Data size (Characters) (Document 77) 624\n",
      "Sample string (Document 77) ['th', 'er', 'e ', 'wa', 's ', 'a ', 'po', 'or', ' b', 'ut', ' g', 'oo', 'd ', 'li', 'tt', 'le', ' g', 'ir', 'l ', 'wh', 'o ', 'li', 've', 'd ', 'al', 'on', 'e ', 'wi', 'th', ' h', 'er', '\\nm', 'ot', 'he', 'r,', ' a', 'nd', ' t', 'he', 'y ', 'no', ' l', 'on', 'ge', 'r ', 'ha', 'd ', 'an', 'yt', 'hi']\n",
      "\n",
      "Processing file stories\\079.txt\n",
      "Data size (Characters) (Document 78) 3991\n",
      "Sample string (Document 78) ['on', 'e ', 'da', 'y ', 'a ', 'pe', 'as', 'an', 't ', 'to', 'ok', ' h', 'is', ' g', 'oo', 'd ', 'ha', 'ze', 'l-', 'st', 'ic', 'k ', 'ou', 't ', 'of', ' t', 'he', ' c', 'or', 'ne', 'r\\n', 'an', 'd ', 'sa', 'id', ' t', 'o ', 'hi', 's ', 'wi', 'fe', ', ', 'tr', 'in', 'a,', ' i', ' a', 'm ', 'go', 'in']\n",
      "\n",
      "Processing file stories\\080.txt\n",
      "Data size (Characters) (Document 79) 1426\n",
      "Sample string (Document 79) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' l', 'it', 'tl', 'e ', 'ch', 'il', 'd ', 'wh', 'os', 'e ', 'mo', 'th', 'er', ' g', 'av', 'e ', 'he', 'r ', 'ev', 'er', 'y\\n', 'af', 'te', 'rn', 'oo', 'n ', 'a ', 'sm', 'al', 'l ', 'bo', 'wl', ' o', 'f ', 'mi', 'lk', ' a', 'nd', ' b', 're', 'ad', ', ']\n",
      "\n",
      "Processing file stories\\081.txt\n",
      "Data size (Characters) (Document 80) 3574\n",
      "Sample string (Document 80) ['in', ' a', ' c', 'er', 'ta', 'in', ' m', 'il', 'l ', 'li', 've', 'd ', 'an', ' o', 'ld', ' m', 'il', 'le', 'r ', 'wh', 'o ', 'ha', 'd ', 'ne', 'it', 'he', 'r ', 'wi', 'fe', ' n', 'or', ' c', 'hi', 'ld', ',\\n', 'an', 'd ', 'th', 're', 'e ', 'ap', 'pr', 'en', 'ti', 'ce', 's ', 'se', 'rv', 'ed', ' u']\n",
      "\n",
      "Processing file stories\\082.txt\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data size (Characters) (Document 81) 10822\n",
      "Sample string (Document 81) ['hi', 'll', ' a', 'nd', ' v', 'al', 'e ', 'do', ' n', 'ot', ' m', 'ee', 't,', ' b', 'ut', ' t', 'he', ' c', 'hi', 'ld', 're', 'n ', 'of', ' m', 'en', ' d', 'o,', ' g', 'oo', 'd ', 'an', 'd ', 'ba', 'd.', '\\ni', 'n ', 'th', 'is', ' w', 'ay', ' a', ' s', 'ho', 'em', 'ak', 'er', ' a', 'nd', ' a', ' t']\n",
      "\n",
      "Processing file stories\\083.txt\n",
      "Data size (Characters) (Document 82) 5480\n",
      "Sample string (Document 82) ['\\th', 'an', 's ', 'th', 'e ', 'he', 'dg', 'eh', 'og', '\\n\\n', 'th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' c', 'ou', 'nt', 'ry', ' m', 'an', ' w', 'ho', ' h', 'ad', ' m', 'on', 'ey', ' a', 'nd', ' l', 'an', 'd ', 'in', ' p', 'le', 'nt', 'y,', ' b', 'ut', '\\nh', 'ow', 'ev', 'er', ' r', 'ic', 'h ']\n",
      "\n",
      "Processing file stories\\084.txt\n",
      "Data size (Characters) (Document 83) 658\n",
      "Sample string (Document 83) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' m', 'ot', 'he', 'r ', 'wh', 'o ', 'ha', 'd ', 'a ', 'li', 'tt', 'le', ' b', 'oy', ' o', 'f ', 'se', 've', 'n ', 'ye', 'ar', 's ', 'ol', 'd,', ' w', 'ho', '\\nw', 'as', ' s', 'o ', 'ha', 'nd', 'so', 'me', ' a', 'nd', ' l', 'ov', 'ab', 'le', ' t', 'ha']\n",
      "\n",
      "Processing file stories\\085.txt\n",
      "Data size (Characters) (Document 84) 5989\n",
      "Sample string (Document 84) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' y', 'ou', 'ng', ' f', 'el', 'lo', 'w ', 'wh', 'o ', 'ha', 'd ', 'le', 'ar', 'nt', ' t', 'he', ' t', 'ra', 'de', ' o', 'f ', 'lo', 'ck', 'sm', 'it', 'h,', '\\na', 'nd', ' t', 'ol', 'd ', 'hi', 's ', 'fa', 'th', 'er', ' h', 'e ', 'wo', 'ul', 'd ', 'no']\n",
      "\n",
      "Processing file stories\\086.txt\n",
      "Data size (Characters) (Document 85) 8758\n",
      "Sample string (Document 85) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' k', 'in', 'g ', 'wh', 'o ', 'ha', 'd ', 'a ', 'li', 'tt', 'le', ' b', 'oy', ' i', 'n ', 'wh', 'os', 'e ', 'st', 'ar', 's\\n', 'it', ' h', 'ad', ' b', 'ee', 'n ', 'fo', 're', 'to', 'ld', ' t', 'ha', 't ', 'he', ' s']\n",
      "\n",
      "Processing file stories\\087.txt\n",
      "Data size (Characters) (Document 86) 3109\n",
      "Sample string (Document 86) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' a', ' p', 'ri', 'nc', 'es', 's ', 'wh', 'o ', 'wa', 's ', 'ex', 'tr', 'em', 'el', 'y ', 'pr', 'ou', 'd.', ' i', 'f ', 'a\\n', 'wo', 'oe', 'r ', 'ca', 'me', ' s', 'he', ' g', 'av', 'e ', 'hi', 'm ', 'so', 'me', ' r', 'id']\n",
      "\n",
      "Processing file stories\\088.txt\n",
      "Data size (Characters) (Document 87) 1365\n",
      "Sample string (Document 87) ['a ', 'ta', 'il', 'or', \"'s\", ' a', 'pp', 're', 'nt', 'ic', 'e ', 'wa', 's ', 'tr', 'av', 'el', 'in', 'g ', 'ab', 'ou', 't ', 'th', 'e ', 'wo', 'rl', 'd ', 'in', ' s', 'ea', 'rc', 'h ', 'of', '\\nw', 'or', 'k,', ' a', 'nd', ' a', 't ', 'on', 'e ', 'ti', 'me', ' h', 'e ', 'co', 'ul', 'd ', 'fi', 'nd']\n",
      "\n",
      "Processing file stories\\089.txt\n",
      "Data size (Characters) (Document 88) 4538\n",
      "Sample string (Document 88) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' o', 'n ', 'a ', 'ti', 'me', ' a', ' s', 'ol', 'di', 'er', ' w', 'ho', ' f', 'or', ' m', 'an', 'y ', 'ye', 'ar', 's ', 'ha', 'd ', 'se', 'rv', 'ed', ' t', 'he', '\\nk', 'in', 'g ', 'fa', 'it', 'hf', 'ul', 'ly', ', ', 'bu', 't ', 'wh', 'en', ' t', 'he', ' w']\n",
      "\n",
      "Processing file stories\\090.txt\n",
      "Data size (Characters) (Document 89) 345\n",
      "Sample string (Document 89) ['on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' t', 'he', 're', ' w', 'as', ' a', ' c', 'hi', 'ld', ' w', 'ho', ' w', 'as', ' w', 'il', 'lf', 'ul', ', ', 'an', 'd ', 'wo', 'ul', 'd ', 'no', 't ', 'do', '\\nw', 'ha', 't ', 'he', 'r ', 'mo', 'th', 'er', ' w', 'is', 'he', 'd.', '  ', 'fo', 'r ', 'th']\n",
      "\n",
      "Processing file stories\\091.txt\n",
      "Data size (Characters) (Document 90) 5460\n",
      "Sample string (Document 90) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' k', 'in', \"g'\", 's ', 'so', 'n,', ' w', 'ho', ' w', 'as', ' n', 'o ', 'lo', 'ng', 'er', ' c', 'on', 'te', 'nt', ' t', 'o ', 'st', 'ay', ' a', 't\\n', 'ho', 'me', ' i', 'n ', 'hi', 's ', 'fa', 'th', 'er', \"'s\", ' h', 'ou', 'se', ', ', 'an', 'd ', 'as']\n",
      "\n",
      "Processing file stories\\092.txt\n",
      "Data size (Characters) (Document 91) 6854\n",
      "Sample string (Document 91) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' y', 'ou', 'ng', ' h', 'un', 'ts', 'ma', 'n ', 'wh', 'o ', 'we', 'nt', ' i', 'nt', 'o ', 'th', 'e ', 'fo', 're', 'st', ' t', 'o ', 'li', 'e ', 'in', '\\nw', 'ai', 't.', '  ', 'he', ' h', 'ad', ' a', ' f', 're', 'sh', ' a', 'nd', ' j', 'oy', 'ou', 's ']\n",
      "\n",
      "Processing file stories\\093.txt\n",
      "Data size (Characters) (Document 92) 2314\n",
      "Sample string (Document 92) ['a ', 'po', 'or', ' s', 'er', 'va', 'nt', '-g', 'ir', 'l ', 'wa', 's ', 'on', 'ce', ' t', 'ra', 've', 'li', 'ng', ' w', 'it', 'h ', 'th', 'e ', 'fa', 'mi', 'ly', ' w', 'it', 'h ', 'wh', 'ic', 'h ', 'sh', 'e\\n', 'wa', 's ', 'in', ' s', 'er', 'vi', 'ce', ', ', 'th', 'ro', 'ug', 'h ', 'a ', 'gr', 'ea']\n",
      "\n",
      "Processing file stories\\094.txt\n",
      "Data size (Characters) (Document 93) 1706\n",
      "Sample string (Document 93) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' m', 'an', ' w', 'ho', ' h', 'ad', ' t', 'hr', 'ee', ' s', 'on', 's,', ' a', 'nd', ' n', 'ot', 'hi', 'ng', ' e', 'ls', 'e ', 'in', ' t', 'he', '\\nw', 'or', 'ld', ' b', 'ut', ' t', 'he', ' h', 'ou', 'se', ' i', 'n ', 'wh', 'ic', 'h ', 'he', ' l', 'iv']\n",
      "\n",
      "Processing file stories\\095.txt\n",
      "Data size (Characters) (Document 94) 3229\n",
      "Sample string (Document 94) ['th', 'er', 'e ', 'wa', 's ', 'a ', 'gr', 'ea', 't ', 'wa', 'r,', ' a', 'nd', ' t', 'he', ' k', 'in', 'g ', 'ha', 'd ', 'ma', 'ny', ' s', 'ol', 'di', 'er', 's,', ' b', 'ut', ' g', 'av', 'e ', 'th', 'em', '\\ns', 'ma', 'll', ' p', 'ay', ', ', 'so', ' s', 'ma', 'll', ' t', 'ha', 't ', 'th', 'ey', ' c']\n",
      "\n",
      "Processing file stories\\096.txt\n",
      "Data size (Characters) (Document 95) 4954\n",
      "Sample string (Document 95) ['on', 'ce', ' u', 'po', 'n ', 'a ', 'ti', 'me', ' l', 'iv', 'ed', ' a', ' m', 'an', ' a', 'nd', ' a', ' w', 'om', 'an', ' w', 'ho', ' s', 'o ', 'lo', 'ng', ' a', 's ', 'th', 'ey', ' w', 'er', 'e\\n', 'ri', 'ch', ' h', 'ad', ' n', 'o ', 'ch', 'il', 'dr', 'en', ', ', 'bu', 't ', 'wh', 'en', ' t', 'he']\n",
      "\n",
      "Processing file stories\\097.txt\n",
      "Data size (Characters) (Document 96) 5732\n",
      "Sample string (Document 96) ['in', ' t', 'he', ' d', 'ay', 's ', 'wh', 'en', ' w', 'is', 'hi', 'ng', ' w', 'as', ' s', 'ti', 'll', ' o', 'f ', 'so', 'me', ' u', 'se', ', ', 'a ', 'ki', 'ng', \"'s\", ' s', 'on', ' w', 'as', '\\nb', 'ew', 'it', 'ch', 'ed', ' b', 'y ', 'an', ' o', 'ld', ' w', 'it', 'ch', ', ', 'an', 'd ', 'sh', 'ut']\n",
      "\n",
      "Processing file stories\\098.txt\n",
      "Data size (Characters) (Document 97) 4334\n",
      "Sample string (Document 97) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' p', 'oo', 'r ', 'ma', 'n ', 'wh', 'o ', 'ha', 'd ', 'fo', 'ur', ' s', 'on', 's,', ' a', 'nd', ' w', 'he', 'n ', 'th', 'ey', ' w', 'er', 'e ', 'gr', 'ow', 'n\\n', 'up', ', ', 'he', ' s', 'ai', 'd ', 'to', ' t', 'he', 'm,', ' \"', 'my', ' d', 'ea', 'r ']\n",
      "\n",
      "Processing file stories\\099.txt\n",
      "Data size (Characters) (Document 98) 7090\n",
      "Sample string (Document 98) ['th', 'er', 'e ', 'wa', 's ', 'on', 'ce', ' a', ' w', 'om', 'an', ' w', 'ho', ' h', 'ad', ' t', 'hr', 'ee', ' d', 'au', 'gh', 'te', 'rs', ', ', 'th', 'e ', 'el', 'de', 'st', ' o', 'f ', 'wh', 'om', '\\nw', 'as', ' c', 'al', 'le', 'd ', 'on', 'e-', 'ey', 'e,', ' b', 'ec', 'au', 'se', ' s', 'he', ' h']\n",
      "\n",
      "Processing file stories\\100.txt\n",
      "Data size (Characters) (Document 99) 1007\n",
      "Sample string (Document 99) ['\"g', 'oo', 'd-', 'da', 'y,', ' f', 'at', 'he', 'r ', 'ho', 'll', 'en', 'th', 'e.', '\" ', '\"m', 'an', 'y ', 'th', 'an', 'ks', ', ', 'pi', 'f-', 'pa', 'f-', 'po', 'lt', 'ri', 'e.', '\" ', '\"m', 'ay', ' i', '\\nb', 'e ', 'al', 'lo', 'we', 'd ', 'to', ' h', 'av', 'e ', 'yo', 'ur', ' d', 'au', 'gh', 'te']\n"
     ]
    }
   ],
   "source": [
    "def read_data(filename):\n",
    "  \n",
    "  with open(filename) as f:\n",
    "    data = tf.compat.as_str(f.read())\n",
    "    data = data.lower()\n",
    "    data = list(data)\n",
    "  return data\n",
    "\n",
    "documents = []\n",
    "global documents\n",
    "for i in range(num_files):    \n",
    "    print('\\nProcessing file %s'%os.path.join(dir_name,filenames[i]))\n",
    "    chars = read_data(os.path.join(dir_name,filenames[i]))\n",
    "    two_grams = [''.join(chars[ch_i:ch_i+2]) for ch_i in range(0,len(chars)-2,2)]\n",
    "    documents.append(two_grams)\n",
    "    print('Data size (Characters) (Document %d) %d' %(i,len(two_grams)))\n",
    "    print('Sample string (Document %d) %s'%(i,two_grams[:50]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Building the Dictionaries (Bigrams)\n",
    "Builds the following. To understand each of these elements, let us also assume the text \"I like to go to school\"\n",
    "\n",
    "* `dictionary`: maps a string word to an ID (e.g. {I:0, like:1, to:2, go:3, school:4})\n",
    "* `reverse_dictionary`: maps an ID to a string word (e.g. {0:I, 1:like, 2:to, 3:go, 4:school}\n",
    "* `count`: List of list of (word, frequency) elements (e.g. [(I,1),(like,1),(to,2),(go,1),(school,1)]\n",
    "* `data` : Contain the string of text we read, where string words are replaced with word IDs (e.g. [0, 1, 2, 3, 2, 4])\n",
    "\n",
    "It also introduces an additional special token `UNK` to denote rare words to are too rare to make use of."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "449177 Characters found.\n",
      "Most common words (+UNK) [('e ', 15229), ('he', 15164), (' t', 13443), ('th', 13076), ('d ', 10687)]\n",
      "Least common words (+UNK) [(\"'p\", 1), ('mc', 1), ('b-', 1), ('sd', 1), (' z', 1), ('dh', 1), ('pw', 1), ('\".', 1), ('m?', 1), ('\\t\"', 1), (\"x'\", 1), ('bj', 1), ('gy', 1), ('hd', 1), (\"a'\", 1)]\n",
      "Sample data [15, 28, 86, 23, 3, 95, 74, 11, 2, 16]\n",
      "Sample data [22, 156, 25, 37, 82, 185, 43, 9, 90, 19]\n",
      "Vocabulary:  544\n"
     ]
    }
   ],
   "source": [
    "\n",
    "\n",
    "def build_dataset(documents):\n",
    "    chars = []\n",
    "    # This is going to be a list of lists\n",
    "    # Where the outer list denote each document\n",
    "    # and the inner lists denote words in a given document\n",
    "    data_list = []\n",
    "  \n",
    "    for d in documents:\n",
    "        chars.extend(d)\n",
    "    print('%d Characters found.'%len(chars))\n",
    "    count = []\n",
    "    # Get the bigram sorted by their frequency (Highest comes first)\n",
    "    count.extend(collections.Counter(chars).most_common())\n",
    "    \n",
    "    # Create an ID for each bigram by giving the current length of the dictionary\n",
    "    # And adding that item to the dictionary\n",
    "    # Start with 'UNK' that is assigned to too rare words\n",
    "    dictionary = dict({'UNK':0})\n",
    "    for char, c in count:\n",
    "        # Only add a bigram to dictionary if its frequency is more than 10\n",
    "        if c > 10:\n",
    "            dictionary[char] = len(dictionary)    \n",
    "    \n",
    "    unk_count = 0\n",
    "    # Traverse through all the text we have\n",
    "    # to replace each string word with the ID of the word\n",
    "    for d in documents:\n",
    "        data = list()\n",
    "        for char in d:\n",
    "            # If word is in the dictionary use the word ID,\n",
    "            # else use the ID of the special token \"UNK\"\n",
    "            if char in dictionary:\n",
    "                index = dictionary[char]        \n",
    "            else:\n",
    "                index = dictionary['UNK']\n",
    "                unk_count += 1\n",
    "            data.append(index)\n",
    "            \n",
    "        data_list.append(data)\n",
    "        \n",
    "    reverse_dictionary = dict(zip(dictionary.values(), dictionary.keys())) \n",
    "    return data_list, count, dictionary, reverse_dictionary\n",
    "\n",
    "global data_list, count, dictionary, reverse_dictionary,vocabulary_size\n",
    "\n",
    "# Print some statistics about data\n",
    "data_list, count, dictionary, reverse_dictionary = build_dataset(documents)\n",
    "print('Most common words (+UNK)', count[:5])\n",
    "print('Least common words (+UNK)', count[-15:])\n",
    "print('Sample data', data_list[0][:10])\n",
    "print('Sample data', data_list[1][:10])\n",
    "print('Vocabulary: ',len(dictionary))\n",
    "vocabulary_size = len(dictionary)\n",
    "del documents  # To reduce memory."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generating Batches of Data\n",
    "The following object generates a batch of data which will be used to train the RNN. More specifically the generator breaks a given sequence of words into `batch_size` segments. We also maintain a cursor for each segment. So whenever we create a batch of data, we sample one item from each segment and update the cursor of each segment. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "Unrolled index 0\n",
      "\tInputs:\n",
      "\te  (1), \tki (131), \t d (48), \t w (11), \tbe (70), \n",
      "\tOutput:\n",
      "\tli (98), \tng (33), \tau (195), \ter (14), \tau (195), \n",
      "\n",
      "Unrolled index 1\n",
      "\tInputs:\n",
      "\tli (98), \tng (33), \tau (195), \ter (14), \tau (195), \n",
      "\tOutput:\n",
      "\tve (41), \t\n",
      "w (169), \tgh (106), \te  (1), \tti (112), \n",
      "\n",
      "Unrolled index 2\n",
      "\tInputs:\n",
      "\tve (41), \t\n",
      "w (169), \tgh (106), \te  (1), \tti (112), \n",
      "\tOutput:\n",
      "\td  (5), \tho (62), \tte (61), \tal (84), \tfu (228), \n",
      "\n",
      "Unrolled index 3\n",
      "\tInputs:\n",
      "\td  (5), \tho (62), \tte (61), \tal (84), \tfu (228), \n",
      "\tOutput:\n",
      "\ta  (82), \tse (58), \trs (137), \tl  (56), \tl, (257), \n",
      "\n",
      "Unrolled index 4\n",
      "\tInputs:\n",
      "\ta  (82), \tse (58), \trs (137), \tl  (56), \tbe (70), \n",
      "\tOutput:\n",
      "\tki (131), \t d (48), \t w (11), \tbe (70), \tau (195), "
     ]
    }
   ],
   "source": [
    "class DataGeneratorOHE(object):\n",
    "    \n",
    "    def __init__(self,text,batch_size,num_unroll):\n",
    "        # Text where a bigram is denoted by its ID\n",
    "        self._text = text\n",
    "        # Number of bigrams in the text\n",
    "        self._text_size = len(self._text)\n",
    "        # Number of datapoints in a batch of data\n",
    "        self._batch_size = batch_size\n",
    "        # Num unroll is the number of steps we unroll the RNN in a single training step\n",
    "        # This relates to the truncated backpropagation we discuss in Chapter 6 text\n",
    "        self._num_unroll = num_unroll\n",
    "        # We break the text in to several segments and the batch of data is sampled by\n",
    "        # sampling a single item from a single segment\n",
    "        self._segments = self._text_size//self._batch_size\n",
    "        self._cursor = [offset * self._segments for offset in range(self._batch_size)]\n",
    "        \n",
    "    def next_batch(self):\n",
    "        '''\n",
    "        Generates a single batch of data\n",
    "        '''\n",
    "        # Train inputs (one-hot-encoded) and train outputs (one-hot-encoded)\n",
    "        batch_data = np.zeros((self._batch_size,vocabulary_size),dtype=np.float32)\n",
    "        batch_labels = np.zeros((self._batch_size,vocabulary_size),dtype=np.float32)\n",
    "        \n",
    "        # Fill in the batch datapoint by datapoint\n",
    "        for b in range(self._batch_size):\n",
    "            # If the cursor of a given segment exceeds the segment length\n",
    "            # we reset the cursor back to the beginning of that segment\n",
    "            if self._cursor[b]+1>=self._text_size:\n",
    "                self._cursor[b] = b * self._segments\n",
    "            \n",
    "            # Add the text at the cursor as the input\n",
    "            batch_data[b,self._text[self._cursor[b]]] = 1.0\n",
    "            # Add the preceding bigram as the label to be predicted\n",
    "            batch_labels[b,self._text[self._cursor[b]+1]]= 1.0                       \n",
    "            # Update the cursor\n",
    "            self._cursor[b] = (self._cursor[b]+1)%self._text_size\n",
    "                    \n",
    "        return batch_data,batch_labels\n",
    "        \n",
    "    def unroll_batches(self):\n",
    "        '''\n",
    "        This produces a list of num_unroll batches\n",
    "        as required by a single step of training of the RNN\n",
    "        '''\n",
    "        unroll_data,unroll_labels = [],[]\n",
    "        for ui in range(self._num_unroll):\n",
    "            data, labels = self.next_batch()            \n",
    "            unroll_data.append(data)\n",
    "            unroll_labels.append(labels)\n",
    "        \n",
    "        return unroll_data, unroll_labels\n",
    "    \n",
    "    def reset_indices(self):\n",
    "        '''\n",
    "        Used to reset all the cursors if needed\n",
    "        '''\n",
    "        self._cursor = [offset * self._segments for offset in range(self._batch_size)]\n",
    "        \n",
    "# Running a tiny set to see if things are correct\n",
    "dg = DataGeneratorOHE(data_list[0][25:50],5,5)\n",
    "u_data, u_labels = dg.unroll_batches()\n",
    "\n",
    "# Iterate through each data batch in the unrolled set of batches\n",
    "for ui,(dat,lbl) in enumerate(zip(u_data,u_labels)):   \n",
    "    print('\\n\\nUnrolled index %d'%ui)\n",
    "    dat_ind = np.argmax(dat,axis=1)\n",
    "    lbl_ind = np.argmax(lbl,axis=1)\n",
    "    print('\\tInputs:')\n",
    "    for sing_dat in dat_ind:\n",
    "        print('\\t%s (%d)'%(reverse_dictionary[sing_dat],sing_dat),end=\", \")\n",
    "    print('\\n\\tOutput:')\n",
    "    for sing_lbl in lbl_ind:        \n",
    "        print('\\t%s (%d)'%(reverse_dictionary[sing_lbl],sing_lbl),end=\", \")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Recurrent Neural Network\n",
    "Here we implement and train our recurrent model that will take an output a new story"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining Hyperparameters\n",
    "\n",
    "Here we define several hyperparameters required.\n",
    "* `num_unroll`: Number of steps we unroll over time during optimizing\n",
    "* `batch_size`: Number of datapoints in a single batch\n",
    "* `hidden`: Number of hidden neurons in the state"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "tf.reset_default_graph()\n",
    "\n",
    "# Number of steps to unroll\n",
    "num_unroll = 50 \n",
    "\n",
    "batch_size = 64 # At train time\n",
    "test_batch_size = 1 # At test time\n",
    "\n",
    "# Number of hidden neurons in the state\n",
    "hidden = 64\n",
    "\n",
    "# Input size and output Size\n",
    "in_size,out_size = vocabulary_size,vocabulary_size\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining Inputs and Outputs\n",
    "Here we define training inputs (`train_dataset`) and outputs (`train_labels`), validation inputs (`valid_dataset`) and outputs (`valid_labels`) and test inputs (`test_dataset`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Train dataset\n",
    "# We use unrolling over time\n",
    "train_dataset, train_labels = [],[]\n",
    "for ui in range(num_unroll):\n",
    "    train_dataset.append(tf.placeholder(tf.float32, shape=[batch_size,in_size],name='train_dataset_%d'%ui))\n",
    "    train_labels.append(tf.placeholder(tf.float32, shape=[batch_size,out_size],name='train_labels_%d'%ui))\n",
    "\n",
    "# Validation dataset    \n",
    "valid_dataset = tf.placeholder(tf.float32, shape=[1,in_size],name='valid_dataset')\n",
    "valid_labels = tf.placeholder(tf.float32, shape=[1,out_size],name='valid_labels')\n",
    "\n",
    "# Test dataset\n",
    "test_dataset = tf.placeholder(tf.float32, shape=[test_batch_size,in_size],name='test_dataset')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining Model Parameters and Other Variables\n",
    "Here we define model parameters. First we define three different sets of weights (`W_xh`,`W_hh` and `W_hy`). We also define a variable to maintain the hidden state. There needs to be three separate variables for the hidden state to be used during training(`prev_train_h`), validation (`prev_valid_h`) and testing (`prev_test_h`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Weights between inputs and h\n",
    "W_xh = tf.Variable(tf.truncated_normal([in_size,hidden],stddev=0.02,dtype=tf.float32),name='W_xh')\n",
    "\n",
    "# Weights between h and h\n",
    "W_hh = tf.Variable(tf.truncated_normal([hidden,hidden],stddev=0.02,dtype=tf.float32),name='W_hh')\n",
    "\n",
    "# Weights between h and y\n",
    "W_hy = tf.Variable(tf.truncated_normal([hidden,out_size],stddev=0.02,dtype=tf.float32),name='W_hy')\n",
    "\n",
    "# Maintain the previous state of hidden nodes in an un-trainable variable (Training data)\n",
    "prev_train_h = tf.Variable(tf.zeros([batch_size,hidden],dtype=tf.float32),name='train_h',trainable=False)\n",
    "\n",
    "# Maintain the previous state of hidden nodes in an un-trainable variable (Validation data)\n",
    "prev_valid_h = tf.Variable(tf.zeros([1,hidden],dtype=tf.float32),name='valid_h',trainable=False)\n",
    "\n",
    "# Maintain the previous state of hidden nodes in testing phase\n",
    "prev_test_h = tf.Variable(tf.zeros([test_batch_size,hidden],dtype=tf.float32),name='test_h')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining Inference of the RNN\n",
    "This is the most crucial bit of RNN and what makes it different from feed forward networks. Here we define operations related to:\n",
    "* Calculating training/validation/test hidden outputs\n",
    "* Calculating training/validation/test predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# ===============================================================================\n",
    "# Train score (unnormalized) values and predictions (normalized)\n",
    "y_scores, y_predictions = [],[]\n",
    "\n",
    "# Appending the calculated output of RNN for each step in the num_unroll steps\n",
    "outputs = list()\n",
    "\n",
    "# This will be iteratively used within num_unroll steps of calculation\n",
    "output_h = prev_train_h\n",
    "\n",
    "# Calculating the output of the RNN for num_unroll steps\n",
    "# (as required by the truncated BPTT)\n",
    "for ui in range(num_unroll):   \n",
    "        output_h = tf.nn.tanh(\n",
    "            tf.matmul(tf.concat([train_dataset[ui],output_h],1),\n",
    "                      tf.concat([W_xh,W_hh],0)) \n",
    "        )    \n",
    "        outputs.append(output_h)\n",
    "\n",
    "# Get the scores and predictions for all the RNN outputs we produced for num_unroll steps\n",
    "y_scores = [tf.matmul(outputs[ui],W_hy) for ui in range(num_unroll)]\n",
    "y_predictions = [tf.nn.softmax(y_scores[ui]) for ui in range(num_unroll)]\n",
    "\n",
    "# We calculate train perplexity with the predictions made by the RNN\n",
    "train_perplexity_without_exp = tf.reduce_sum(tf.concat(train_labels,0)*-tf.log(tf.concat(y_predictions,0)+1e-10))/(num_unroll*batch_size)\n",
    "\n",
    "# ===============================================================================\n",
    "# Validation data related inference logic \n",
    "# (very similar to the training inference logic)\n",
    "\n",
    "# Compute the next valid state (only for 1 step)\n",
    "next_valid_state = tf.nn.tanh(tf.matmul(valid_dataset,W_xh)  +\n",
    "                                tf.matmul(prev_valid_h,W_hh))\n",
    "\n",
    "# Calculate the prediction using the state output of the RNN\n",
    "# But before that, assign the latest state output of the RNN\n",
    "# to the state variable of the validation phase\n",
    "# So you need to make sure you execute valid_predictions operation\n",
    "# To update the validation state\n",
    "with tf.control_dependencies([tf.assign(prev_valid_h,next_valid_state)]):\n",
    "    valid_scores = tf.matmul(next_valid_state,W_hy) \n",
    "    valid_predictions = tf.nn.softmax(valid_scores)\n",
    "\n",
    "# Validation data related perplexity\n",
    "valid_perplexity_without_exp = tf.reduce_sum(valid_labels*-tf.log(valid_predictions+1e-10))\n",
    "\n",
    "# ===============================================================================\n",
    "# Test data realted inference logic\n",
    "\n",
    "# Calculating hidden output for test data\n",
    "next_test_state = tf.nn.tanh(tf.matmul(test_dataset,W_xh) +\n",
    "                          tf.matmul(prev_test_h,W_hh)\n",
    "                         )\n",
    "\n",
    "# Making sure that the test hidden state is updated \n",
    "# every time we make a prediction\n",
    "with tf.control_dependencies([tf.assign(prev_test_h,next_test_state)]):\n",
    "    test_prediction = tf.nn.softmax(tf.matmul(next_test_state,W_hy))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Calculating RNN Loss\n",
    "We calculate the training and validation loss of RNN here. It's a typical cross entropy loss calculated over all the scores we obtained for training data (`rnn_loss`) and validation data (`rnn_valid_loss`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Here we make sure that before calculating the loss, the state variable is updated\n",
    "# with the last RNN output state we obtained\n",
    "with tf.control_dependencies([tf.assign(prev_train_h,output_h)]):\n",
    "    # We calculate the softmax cross entropy for all the predictions we obtained\n",
    "    # in all num_unroll steps at once.\n",
    "    rnn_loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(\n",
    "        logits=tf.concat(y_scores,0), labels=tf.concat(train_labels,0)\n",
    "    ))\n",
    "    \n",
    "# Validation RNN loss    \n",
    "rnn_valid_loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(\n",
    "   logits=valid_scores, labels=valid_labels))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining Learning Rate and the Optimizer with Gradient Clipping\n",
    "Here we define the learning rate and the optimizer we're going to use. We will be using the Adam optimizer as it is one of the best optimizers out there. Furthermore we use gradient clipping to prevent any gradient explosions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Be very careful with the learning rate when using Adam\n",
    "rnn_optimizer = tf.train.AdamOptimizer(learning_rate=0.001)\n",
    "\n",
    "# Optimization with graident clipping\n",
    "gradients, v = zip(*rnn_optimizer.compute_gradients(rnn_loss))\n",
    "gradients, _ = tf.clip_by_global_norm(gradients, 5.0)\n",
    "rnn_optimizer = rnn_optimizer.apply_gradients(zip(gradients, v))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Resetting Operations for Resetting Hidden States\n",
    "Sometimes the state variable needs to be reset (e.g. when starting predictions at a beginning of a new epoch)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Reset the hidden states\n",
    "reset_train_h_op = tf.assign(prev_train_h,tf.zeros([batch_size,hidden],dtype=tf.float32))\n",
    "reset_valid_h_op = tf.assign(prev_valid_h,tf.zeros([1,hidden],dtype=tf.float32))\n",
    "\n",
    "# Note that we are using small imputations when resetting the test state\n",
    "# As this helps to add more variation to the generated text\n",
    "reset_test_h_op = tf.assign(prev_test_h,tf.truncated_normal([test_batch_size,hidden],stddev=0.01,dtype=tf.float32))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prediction Sampling\n",
    "We select the word corresponding to the highest index of the prediction vector. We will later see different sampling strategies."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def sample(distribution):\n",
    "  '''\n",
    "  Sample a word from the prediction distribution\n",
    "  '''  \n",
    "  best_idx = np.argmax(distribution)\n",
    "  return best_idx"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Running the RNN to Generate Text\n",
    "\n",
    "Here we train the RNN on the available data and generate text using the trained RNN for several steps. First we create a validation set by extracting text snippets (that are not present in training data) from longer documents. Then at each training step, we train the RNN on several randomly picked documents. From each document we extract text for `steps_per_document` steps. We also report the train and validation perplexities at the end of each step. Finally we test the RNN by asking it to generate some new text starting from a randomly picked bigram."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initialized\n",
      "\n",
      "\n",
      "Document 18 Step 1 processed (Perplexity: 215.57).\n",
      "Document 6 Step 1 processed (Perplexity: 162.49).\n",
      "Document 1 Step 1 processed (Perplexity: 166.04).\n",
      "Document 14 Step 1 processed (Perplexity: 126.05).\n",
      "Document 9 Step 1 processed (Perplexity: 75.50).\n",
      "Average loss at step 1: 4.947378\n",
      "\tPerplexity at step 1: 140.805218\n",
      "\n",
      "Valid Perplexity: 83.21\n",
      "\n",
      "Generated Text after epoch 0 ... \n",
      "======================== New text Segment ==========================\n",
      "\t hat the was a e wre\n",
      "of to the was the was the was the was the was the was the was the was the was the was the was the was the was the was the was the was a e was of then the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the the \n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 4 Step 2 processed (Perplexity: 58.22).\n",
      "Document 6 Step 2 processed (Perplexity: 36.58).\n",
      "Document 0 Step 2 processed (Perplexity: 30.45).\n",
      "Document 16 Step 2 processed (Perplexity: 21.55).\n",
      "Document 9 Step 2 processed (Perplexity: 20.80).\n",
      "Average loss at step 2: 3.437102\n",
      "\tPerplexity at step 2: 31.096714\n",
      "\n",
      "Valid Perplexity: 42.22\n",
      "\n",
      "Generated Text after epoch 1 ... \n",
      "======================== New text Segment ==========================\n",
      "\t  and said, and when the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king, and the king\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 17 Step 3 processed (Perplexity: 16.59).\n",
      "Document 7 Step 3 processed (Perplexity: 18.87).\n",
      "Document 14 Step 3 processed (Perplexity: 22.99).\n",
      "Document 10 Step 3 processed (Perplexity: 10.88).\n",
      "Document 6 Step 3 processed (Perplexity: 15.29).\n",
      "Average loss at step 3: 2.799021\n",
      "\tPerplexity at step 3: 16.428563\n",
      "\n",
      "Valid Perplexity: 39.44\n",
      "\n",
      "Generated Text after epoch 2 ... \n",
      "======================== New text Segment ==========================\n",
      "\t himself beggar girl was licking, and she answered, by twelve and she had seven she ding to they were they were the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, and the king's daughter with the king what they were the king what be the stay, \n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 9 Step 4 processed (Perplexity: 11.35).\n",
      "Document 19 Step 4 processed (Perplexity: 15.20).\n",
      "Document 18 Step 4 processed (Perplexity: 9.62).\n",
      "Document 1 Step 4 processed (Perplexity: 14.84).\n",
      "Document 2 Step 4 processed (Perplexity: 26.35).\n",
      "Average loss at step 4: 2.676695\n",
      "\tPerplexity at step 4: 14.536964\n",
      "\n",
      "Valid Perplexity: 32.86\n",
      "\n",
      "Generated Text after epoch 3 ... \n",
      "======================== New text Segment ==========================\n",
      "\t aught what it the youth,\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "and and said UNKe yout full of have led the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the youth the yout\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 7 Step 5 processed (Perplexity: 11.25).\n",
      "Document 17 Step 5 processed (Perplexity: 7.52).\n",
      "Document 13 Step 5 processed (Perplexity: 16.12).\n",
      "Document 0 Step 5 processed (Perplexity: 10.31).\n",
      "Document 12 Step 5 processed (Perplexity: 12.73).\n",
      "Average loss at step 5: 2.418999\n",
      "\tPerplexity at step 5: 11.234604\n",
      "\n",
      "Valid Perplexity: 42.93\n",
      "\n",
      "Generated Text after epoch 4 ... \n",
      "======================== New text Segment ==========================\n",
      "\t lf, and said, there that he heart took they her was not the would husband as thered the king's deave.  then the king of the chill soon they had not the other, and recond the her father, and the would make the dead of they ard the three snipe-appened there them be unto the wash her as then the was\n",
      "placed with her accomplice in a servant them out.  and there with the snake again, and opened the king brought the took again still soon deen the king, and been to a servant he had been the did not the dinguing beented him in a great ifuld to life again, and becon, and the king's come back to be lestle the gonees.  they read been the king's come back to be lestle the gonees.  then she was\n",
      "placed with her accomplice in a servant them out.  and there with the snake again, and opened the king brought the took again still soon deen the king, and been to a servant he had been the did not the dinguing beented him in a great ifuld to life again, and becon, and the king's come back to be lestle the gonees.  they read been the king's come back to be lestle the gonees.  then she was\n",
      "placed with her accomplice in a servant them out.  and there with the snake again, and opened the king brought the took again still soon deen the king, and been to a servant he had been the did not the dinguing beented him in a great ifuld to life again, and becon, and the king's come back to be lestle the gonees.  they read been the king's come back to be lestle the gonees.  then she was\n",
      "placed with her accomplice in a servant them out.  and there with the snake again, and opened the king brought the took again still soon deen the king, and been to a servant he had been the did not the dinguing beented him in a great ifuld to life again, and becon, and the king's come back to be lestle the gonees.  they read been the king's come back to be lestle the gonees.  then she was\n",
      "placed with her accomplice in a servant them out.  and there with the snake again, and opened the king brought the took again still soon\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 6 Step 6 processed (Perplexity: 11.00).\n",
      "Document 8 Step 6 processed (Perplexity: 13.35).\n",
      "Document 2 Step 6 processed (Perplexity: 17.62).\n",
      "Document 0 Step 6 processed (Perplexity: 6.18).\n",
      "Document 7 Step 6 processed (Perplexity: 8.93).\n",
      "Average loss at step 6: 2.374021\n",
      "\tPerplexity at step 6: 10.740495\n",
      "\n",
      "Valid Perplexity: 36.55\n",
      "\n",
      "Generated Text after epoch 5 ... \n",
      "======================== New text Segment ==========================\n",
      "\t rew who her an the said to the dear of the was comand the door, and were to been to beened before the judge, and the judUNKent was delivered\n",
      "against them.  the king into the king was to neeged the judge, and the king day the child.  the came the queen,\n",
      "     how fares my roe.\n",
      "     the king the took to the queen might and said, and but and then she was child the child not heard the child not heard a cracking behind her and said, ah, god into the forest where the went forthe been the queen began to became but the was nightent and this more.\n",
      "then the king lay the queen began to beened to pieces by and said, ah, god into the forest where the went forthe been the queen began to became but the was nightent and this more.\n",
      "then the king lay the queen began to beened to pieces by and said, ah, god into the forest where the went forthe been the queen began to became but the was nightent and this more.\n",
      "then the king lay the queen began to beened to pieces by and said, ah, god into the forest where the went forthe been the queen began to became but the was nightent and this more.\n",
      "then the king lay the queen began to beened to pieces by and said, ah, god into the forest where the went forthe been the queen began to became but the was nightent and this more.\n",
      "then the king lay the queen began to beened to pieces by and said, ah, god into the forest where the went forthe been the queen began to became but the was nightent and this more.\n",
      "then the king lay the queen began to beened to pieces by and said, ah, god into the forest where the went forthe been the queen began to became but the was nightent and this more.\n",
      "then the king lay the queen began to beened to pieces by and said, ah, god into the forest where the went forthe been the queen began to became but the was nightent and this more.\n",
      "then the king lay the queen began to beened to pieces by and said, ah, god into the forest where the went forthe been the queen began to became but the was nightent and this more.\n",
      "then the king lay t\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 12 Step 7 processed (Perplexity: 6.70).\n",
      "Document 10 Step 7 processed (Perplexity: 6.13).\n",
      "Document 16 Step 7 processed (Perplexity: 8.59).\n",
      "Document 4 Step 7 processed (Perplexity: 17.84).\n",
      "Document 8 Step 7 processed (Perplexity: 7.59).\n",
      "Average loss at step 7: 2.154940\n",
      "\tPerplexity at step 7: 8.627372\n",
      "\n",
      "Valid Perplexity: 45.10\n",
      "\n",
      "Generated Text after epoch 6 ... \n",
      "======================== New text Segment ==========================\n",
      "\t n her feor, but hiching the to the eyes, and when her and but into the her every, that he went towards\n",
      "it, and when he approached, rapunzel knew him and in her and cried,\n",
      "     rapunzel, rapunzel, rapunzel,\n",
      "      on to hich, and went they life the king's son was beside himself with went to his found herself the heard you will to he was rapunzel, and the king's son was beside himself with were, and well to hich, but the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "and wept.  two of her tears went the world he towere a broe.  oh will le, and when the had been the king's son had neck\n",
      "\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 17 Step 8 processed (Perplexity: 6.63).\n",
      "Document 11 Step 8 processed (Perplexity: 22.85).\n",
      "Document 3 Step 8 processed (Perplexity: 10.71).\n",
      "Document 7 Step 8 processed (Perplexity: 8.57).\n",
      "Document 0 Step 8 processed (Perplexity: 6.02).\n",
      "Average loss at step 8: 2.267097\n",
      "\tPerplexity at step 8: 9.651340\n",
      "\n",
      "Valid Perplexity: 41.26\n",
      "\n",
      "Generated Text after epoch 7 ... \n",
      "======================== New text Segment ==========================\n",
      "\t ith they was put there herself in when they well into his from whim he wayh pieces be and said, \"henry, and took him up and wanted them to the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  again and once again while they were a frog and\n",
      "imprisoned in the well.\"  a\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 8 Step 9 processed (Perplexity: 5.61).\n",
      "Document 7 Step 9 processed (Perplexity: 5.60).\n",
      "Document 13 Step 9 processed (Perplexity: 10.89).\n",
      "Document 12 Step 9 processed (Perplexity: 6.43).\n",
      "Document 19 Step 9 processed (Perplexity: 9.83).\n",
      "Average loss at step 9: 1.996422\n",
      "\tPerplexity at step 9: 7.362662\n",
      "\n",
      "Valid Perplexity: 49.24\n",
      "\n",
      "Generated Text after epoch 8 ... \n",
      "======================== New text Segment ==========================\n",
      "\t s of the would grandmother, what he could no the grandmother, when he saille, and the wolf, and had her grandmother saw what he could\n",
      "no longer keep his footing and began to slip, and slipped down\n",
      "from the roof straight into the great trough, and was a great said to the door, and sto the great that the wood, and the wolf, and had the woken toger in the was again to mother, and the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, and when he saille one little great stood the wolf, \n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 8 Step 10 processed (Perplexity: 4.65).\n",
      "Document 9 Step 10 processed (Perplexity: 11.59).\n",
      "Document 10 Step 10 processed (Perplexity: 4.97).\n",
      "Document 16 Step 10 processed (Perplexity: 6.45).\n",
      "Document 15 Step 10 processed (Perplexity: 19.27).\n",
      "Average loss at step 10: 2.082515\n",
      "\tPerplexity at step 10: 8.024626\n",
      "\n",
      "Valid Perplexity: 42.19\n",
      "\n",
      "Generated Text after epoch 9 ... \n",
      "======================== New text Segment ==========================\n",
      "\t ver daughter usually worse went to the be you have\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "decon as they wase took for therew the king's son had go ey rapunzel into the fore, and thered the maiden, but she the tree, and the treat off the trorse, they came turnt, and the king's son was the king's son had go at show for the twelver when the king's son.  not knowever, for the went frown of it.  there when she was took thereng in the bip, toon she was to the fore, and thered the maiden, but she the tree, and the treat off the trorse, they came turnt, and the king's son was the king's son had go at show for the twelver when the king's son.  not knowever, for the went frown of it.  there when she was took thereng in the bip, toon she was to the fore, and thered the maiden, but she the tree, and the treat off the trorse, they came turnt, and the king's son was the king's son had go at show for the twelver when the king's son.  not knowever, for the went frown of it.  there when she was took thereng in the bip, toon she was to the fore, and thered the maiden, but she the tree, and the treat off the trorse, they came turnt, and the king's son was the king's son had go at show for the twelver when the king's son.  not knowever, for the went frown of it.  there when she was took thereng in the bip, toon she was to the fore, and thered the maiden, but she the tree, and the treat off the trorse, they came turnt, and the king's son was the king's son had go at show for the twelver when the king's son.  not knowever, for the went frown of it.  there when she was took thereng in the bip, toon she was to the fore, and thered the maiden, but she the tree, and the treat off the trorse, they came turnt, and the king's son was the king's son had go at show for the twelver when the king's son.  not knowever, for the went frown of it.  there when she was took thereng in the bip, toon she was to the fore, and thered the maiden, but she the tree, and the treat off the trorse, they came turnt, and the king's son was the king's son h\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 12 Step 11 processed (Perplexity: 5.73).\n",
      "Document 5 Step 11 processed (Perplexity: 16.87).\n",
      "Document 1 Step 11 processed (Perplexity: 12.29).\n",
      "Document 4 Step 11 processed (Perplexity: 13.79).\n",
      "Document 9 Step 11 processed (Perplexity: 8.49).\n",
      "Average loss at step 11: 2.368347\n",
      "\tPerplexity at step 11: 10.679721\n",
      "\n",
      "Valid Perplexity: 35.19\n",
      "\n",
      "Generated Text after epoch 10 ... \n",
      "======================== New text Segment ==========================\n",
      "\t  to berriage is hered the king, and what the said the peeping in the said, and it was strong, and the king, and what the king was full of great joy, and then the king, and well and at how no of her mother the wasted to the said, away her mother in a back.  the king was full of great joy,\n",
      "but the said the peeping in the said, and here the king, who the king, you ses that your down the said, he said to her mouth, and then the king, and what the said, and he wanted to the king, and that the said, and it was that the saway, and what the said to the said, and it was strong, and the king, and what the king was full of great joy, and then the king, and well and at how no of her mother the wasted to the said, away her mother in a back.  the king was full of great joy,\n",
      "but the said the peeping in the said, and here the king, who the king, you ses that your down the said, he said to her mouth, and then the king, and what the said, and he wanted to the king, and that the said, and it was that the saway, and what the said to the said, and it was strong, and the king, and what the king was full of great joy, and then the king, and well and at how no of her mother the wasted to the said, away her mother in a back.  the king was full of great joy,\n",
      "but the said the peeping in the said, and here the king, who the king, you ses that your down the said, he said to her mouth, and then the king, and what the said, and he wanted to the king, and that the said, and it was that the saway, and what the said to the said, and it was strong, and the king, and what the king was full of great joy, and then the king, and well and at how no of her mother the wasted to the said, away her mother in a back.  the king was full of great joy,\n",
      "but the said the peeping in the said, and here the king, who the king, you ses that your down the said, he said to her mouth, and then the king, and what the said, and he wanted to the king, and that the said, and it was that the saway, and what the said to the said,\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 17 Step 12 processed (Perplexity: 6.01).\n",
      "Document 1 Step 12 processed (Perplexity: 6.86).\n",
      "Document 4 Step 12 processed (Perplexity: 9.56).\n",
      "Document 15 Step 12 processed (Perplexity: 11.43).\n",
      "Document 12 Step 12 processed (Perplexity: 4.94).\n",
      "Average loss at step 12: 2.001975\n",
      "\tPerplexity at step 12: 7.403662\n",
      "\n",
      "Valid Perplexity: 39.58\n",
      "\n",
      "Generated Text after epoch 11 ... \n",
      "======================== New text Segment ==========================\n",
      "\t e ofrning in the reward that you deserve.  then she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a ship which had been pierced with\n",
      "holes, and sent out to sea, where they soon sank amid the wavest the king's sonp, and some threw day she was\n",
      "placed with her accomplice in a \n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 7 Step 13 processed (Perplexity: 7.25).\n",
      "Document 9 Step 13 processed (Perplexity: 6.55).\n",
      "Document 6 Step 13 processed (Perplexity: 10.79).\n",
      "Document 0 Step 13 processed (Perplexity: 6.43).\n",
      "Document 10 Step 13 processed (Perplexity: 4.40).\n",
      "Average loss at step 13: 1.916483\n",
      "\tPerplexity at step 13: 6.797010\n",
      "\n",
      "Valid Perplexity: 51.20\n",
      "\n",
      "Generated Text after epoch 12 ... \n",
      "======================== New text Segment ==========================\n",
      "\t you must begep thered herself, and said, how do you come by\n",
      "such a broad foot.  by treading, she answered, by treading.  then\n",
      "the bridegroom went to the thread, she answered, by twisting the thread, she answered, by twisting the thread.  on\n",
      "this the king's son was alarmed and said, neither now nor ever\n",
      "shall my beautiful bride touch a spinning-wheel.  and thus she\n",
      "got rid of the hateful flax-spinning.  the your aunts, i amapperfore, she sat to the queen hat tooken, and thuse of the girl, and the the three, and that las and said, how do you come by\n",
      "your falling lip.  by licking, she answered, by licking.  then\n",
      "he asked the third, how do you come by your broad thumb.  by\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "twisting the thread, she answered, by twisting the thread.  on\n",
      "this the king's son was alarmed and said, neither now nor ever\n",
      "shall my beautiful bride touch a spinning-wheel.  and thus she\n",
      "got rid of the hateful flax-spinning.  the your aunts, i amapperfore, she sat to the queen hat tooken, and thuse of the girl, and the the three, and that las and said, how do you come by\n",
      "your falling lip.  by licking, she answered, by licking.  then\n",
      "he asked the third, how do you come by your broad thumb.  by\n",
      "twisting the thread, she answered, by twisting the thread.  on\n",
      "this the king's son was alarmed and said, neither now nor ever\n",
      "shall my beautiful bride touch a spinning-wheel.  and thus she\n",
      "got rid of the hateful flax-spinning.  the your aunts, i amapperfore, she sat to the queen hat tooken, and thuse of the girl, and the the three, and that las and said, how do you come by\n",
      "your falling lip.  by licking, she answered, by licking.  then\n",
      "he asked the third, how do you come by your broad thumb.  by\n",
      "twisting the thread, she answered, by twisting the thread.  on\n",
      "this the king's son was alarmed and said, neither now nor ever\n",
      "shall my beautiful bride touch a spinning-wheel.  and thus she\n",
      "got rid of the hateful flax-spinning.  the your aunts, i amapperfore, she sat to the queen hat tooken, and thuse of the girl, and the t\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 1 Step 14 processed (Perplexity: 7.17).\n",
      "Document 4 Step 14 processed (Perplexity: 9.15).\n",
      "Document 11 Step 14 processed (Perplexity: 17.36).\n",
      "Document 0 Step 14 processed (Perplexity: 4.50).\n",
      "Document 16 Step 14 processed (Perplexity: 5.90).\n",
      "Average loss at step 14: 2.063661\n",
      "\tPerplexity at step 14: 7.874748\n",
      "\n",
      "Valid Perplexity: 49.00\n",
      "\n",
      "Generated Text after epoch 13 ... \n",
      "======================== New text Segment ==========================\n",
      "\t y, and said, \"next morning, what is that.  he and when the judges saw the misty-grey one which the king's\n",
      "daughter usually wore, they said, let the mantle be\n",
      "embroidered with gold and silver, and then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then he and then her, and thought that his mantly me, and the mantles not hat this she cand told herself, the riddled to the sleep.\"\n",
      "\n",
      "the king's daughter\n",
      "announced that she had guessed the riddle the mantle so fastered the king's daughter, and then helself by and was not be to great lerself.  she must to sleepined that.  then the maide, and said, he leep and died of they withought with gold and silver, and then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then he and then her, and thought that his mantly me, and the mantles not hat this she cand told herself, the riddled to the sleep.\"\n",
      "\n",
      "the king's daughter\n",
      "announced that she had guessed the riddle the mantle so fastered the king's daughter, and then helself by and was not be to great lerself.  she must to sleepined that.  then the maide, and said, he leep and died of they withought with gold and silver, and then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then he and then her, and thought that his mantly me, and the mantles not hat this she cand told herself, the riddled to the sleep.\"\n",
      "\n",
      "the king's daughter\n",
      "announced that she had guessed the riddle the mantle so fastered the king's daughter, and then helself by and was not be to great lerself.  she must to sleepined that.  then the maide, and said, he leep and died of they withought with gold and silver, and then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then he and then her, and thought that his mantly me, and the mantles not hat this she cand told herself, the riddled to the sleep.\"\n",
      "\n",
      "the king's daughter\n",
      "announced that she had guessed the riddle the mantle so fastered the king's daughter, and then helself by and was not \n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 18 Step 15 processed (Perplexity: 7.15).\n",
      "Document 6 Step 15 processed (Perplexity: 8.68).\n",
      "Document 8 Step 15 processed (Perplexity: 6.51).\n",
      "Document 16 Step 15 processed (Perplexity: 3.79).\n",
      "Document 19 Step 15 processed (Perplexity: 8.85).\n",
      "Average loss at step 15: 1.902930\n",
      "\tPerplexity at step 15: 6.705512\n",
      "\n",
      "Valid Perplexity: 49.47\n",
      "\n",
      "Generated Text after epoch 14 ... \n",
      "======================== New text Segment ==========================\n",
      "\t easy and fubthe wolf, and her thought the great red-cap went joyously home, and no one ever did anything\n",
      "to here was again.  he said to the wolf, and heard a pail, the grandmother saw said to her, and wasked trere ing,\n",
      "old with suched her strether to been better her and deen.      on the crown\n",
      "fing the smell\n",
      "of the sautiful\n",
      "le it, and was the were the house, and then her carchave her with you.  the great scked, and and the greath.\n",
      "hisn she would not he scaked and the wolf, and had the wolf'sy great ifuld he she\n",
      "darsaid, ree canning the wolf, and her knocked, take the pail, and the wolf, and hat he came the wolf, and now\n",
      "the grandmother at little wolf, and expoisdied to leave ith red-cap in the great my saw said, good me mother, and the wolf, and now the grandmother ate the grandmother the wolf, and now the smorest the grandmother at in the wolf, and red-cap the wood, and her grandmother saw the thirst, and welled with you.  the slipped her dinger, and so she couldend st them the grandmother saw the little red-cap,\" she\n",
      "dearld.  \"the grey-grey\n",
      "joiwatch her that he wolf, and red-cap ind of the greath, and wasked the wolf, and he round then the smell\n",
      "of the sauticed her that he could\n",
      "no longer keep his footing and began to slip, and slipped down\n",
      "from the roof straight into the great trough, so she could no of the wolf, and red-cap went joyously home, and no one ever did anything\n",
      "to here was again.  he said to the wolf, and heard a pail, the grandmother saw said to her, and wasked trere ing,\n",
      "old with suched her strether to been better her and deen.      on the crown\n",
      "fing the smell\n",
      "of the sautiful\n",
      "le it, and was the were the house, and then her carchave her with you.  the great scked, and and the greath.\n",
      "hisn she would not he scaked and the wolf, and had the wolf'sy great ifuld he she\n",
      "darsaid, ree canning the wolf, and her knocked, take the pail, and the wolf, and hat he came the wolf, and now\n",
      "the grandmother at little wolf, and expoisdied to leave ith red-cap in the great\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 8 Step 16 processed (Perplexity: 3.85).\n",
      "Document 11 Step 16 processed (Perplexity: 13.09).\n",
      "Document 10 Step 16 processed (Perplexity: 4.07).\n",
      "Document 14 Step 16 processed (Perplexity: 20.44).\n",
      "Document 7 Step 16 processed (Perplexity: 7.65).\n",
      "Average loss at step 16: 2.074774\n",
      "\tPerplexity at step 16: 7.962747\n",
      "\n",
      "Valid Perplexity: 41.11\n",
      "\n",
      "Generated Text after epoch 15 ... \n",
      "======================== New text Segment ==========================\n",
      "\t  the queen rejoiced went quite went on the took the maiden and\n",
      "lest this the king was chill and the king to do not so hans.  not to her, but they went quite\n",
      "shut into the led time the great was son was delivered him all.  the i coverened the child to them, and the king ordered\n",
      "both to be led before the judge, and she answered, and said, and said, i sheard of they the whice she was to the bed, who\n",
      "he was\n",
      "disand who he said, i she was wast into the forest where she was took the said, what the little tain himself.  he sprang to the queen, and was dear was nonly my in the could but at the crading.  the queen was deares, me the said, and said, how fares my roe.\n",
      "     then the queen againto the door son way dears of the beast, whice she was to the deared himself.  he sprang as she did not roe, when his feach and the nurse, and the king to the king had suffear, and said,\n",
      "     how fares my child, how fares my roe.\n",
      "     then the queen againto the door son way dears of the beast, whice she was to the deared himself.  he sprang as she did not roe, when his feach and the nurse, and the king to the king had suffear, and said,\n",
      "     how fares my child, how fares my roe.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     then the queen againto the door son way dears of the beast, whice she was to the deared himself.  he sprang as she did not roe, when his feach and the nurse, and the king to the king had suffear, and said,\n",
      "     how fares my child, how fares my roe.\n",
      "     then the queen againto the door son way dears of the beast, whice she was to the deared himself.  he sprang as she did not roe, when his feach and the nurse, and the king to the king had suffear, and said,\n",
      "     how fares my child, how fares my roe.\n",
      "     then the queen againto the door son way dears of the beast, whice she was to the deared himself.  he sprang as she did not roe, when his feach and the nurse, and the king to the king had suffear, and said,\n",
      "     how fares my child, how fares my roe.\n",
      "     then the queen againto the door son way dears of the beast, wh\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 9 Step 17 processed (Perplexity: 7.53).\n",
      "Document 4 Step 17 processed (Perplexity: 9.85).\n",
      "Document 19 Step 17 processed (Perplexity: 5.69).\n",
      "Document 14 Step 17 processed (Perplexity: 13.24).\n",
      "Document 0 Step 17 processed (Perplexity: 5.06).\n",
      "Average loss at step 17: 2.049946\n",
      "\tPerplexity at step 17: 7.767484\n",
      "\n",
      "Valid Perplexity: 41.83\n",
      "\n",
      "Generated Text after epoch 16 ... \n",
      "======================== New text Segment ==========================\n",
      "\t  had becaughter byred with you here in the wasteng and at to the way to beling again, and said, \"i am tired, i will wanted the\n",
      "king's son heard a cracking behind him as if something had broken.\n",
      "so he turned round and princess,\n",
      "youngest princess, and this so to great pain when you were a frog and\n",
      "imprisoned in the well.\"  again and paid room.  the king, \"the king him up and the king's said, \"now, push you come by a great\n",
      "dread.  when they had driven a part of the way the\n",
      "king's son heard a cracking behind him as if something had broken.\n",
      "so he turned round and princess,\n",
      "youngest princess, and this so to great pain when you were a frog and\n",
      "imprisoned in the well.\"  again and paid room.  the king, \"the king him up and the king's said, \"now, push you come by a great\n",
      "dread.  when they had driven a part of the way the\n",
      "king's son heard a cracking behind him as if something had broken.\n",
      "so he turned round and princess,\n",
      "youngest princess, and this so to great pain when you were a frog and\n",
      "imprisoned in the well.\"  again and paid room.  the king, \"the king him up and the king's said, \"now, push you come by a great\n",
      "dread.  when they had driven a part of the way the\n",
      "king's son heard a cracking behind him as if something had broken.\n",
      "so he turned round and princess,\n",
      "youngest princess, and this so to great pain when you were a frog and\n",
      "imprisoned in the well.\"  again and paid room.  the king, \"the king him up and the king's said, \"now, push you come by a great\n",
      "dread.  when they had driven a part of the way the\n",
      "king's son heard a cracking behind him as if something had broken.\n",
      "so he turned round and princess,\n",
      "youngest princess, and this so to great pain when you were a frog and\n",
      "imprisoned in the well.\"  again and paid room.  the king, \"the king him up and the king's said, \"now, push you come by a great\n",
      "dread.  when they had driven a part of the way the\n",
      "king's son heard a cracking behind him as if something had broken.\n",
      "so he turned round and princess,\n",
      "youngest princess, and this so to g\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 8 Step 18 processed (Perplexity: 4.34).\n",
      "Document 16 Step 18 processed (Perplexity: 3.96).\n",
      "Document 19 Step 18 processed (Perplexity: 4.14).\n",
      "Document 1 Step 18 processed (Perplexity: 7.78).\n",
      "Document 2 Step 18 processed (Perplexity: 20.16).\n",
      "Average loss at step 18: 1.864290\n",
      "\tPerplexity at step 18: 6.451353\n",
      "\n",
      "Valid Perplexity: 39.24\n",
      "\n",
      "Generated Text after epoch 17 ... \n",
      "======================== New text Segment ==========================\n",
      "\t wards her, and said the youth the twell.' then he had it, and that is and let her by himself showeve, and the king's down.' then he had the fire.' 'a with me this, said he,  'if i felled them to the forthe him.  'have could but her child the the man was full of the room, with me the well, said he,  'i will hunto and went to the fire andy of the caress of\n",
      "inning and drin horse, and said 'i will the youther and have you have himself, and said 'i had such a mand the sky and extinged to the went and said the little bed, but when they had beard a would brought to the fore, and at last as belors to speak of go at is some.' then the carried her heart, however, the youth stranced\n",
      "it, and she the king said 'ah, if i promises of the daughter, and then said he,  'i will hunto and went to the fire andy of the caress of\n",
      "inning and drin horse, and said 'i will the youther and have you have himself, and said 'i had such a mand the sky and extinged to the went and said the little bed, but when they had beard a would brought to the fore, and at last as belors to speak of go at is some.' then the carried her heart, however, the youth stranced\n",
      "it, and she the king said 'ah, if i promises of the daughter, and then said he,  'i will hunto and went to the fire andy of the caress of\n",
      "inning and drin horse, and said 'i will the youther and have you have himself, and said 'i had such a mand the sky and extinged to the went and said the little bed, but when they had beard a would brought to the fore, and at last as belors to speak of go at is some.' then the carried her heart, however, the youth stranced\n",
      "it, and she the king said 'ah, if i promises of the daughter, and then said he,  'i will hunto and went to the fire andy of the caress of\n",
      "inning and drin horse, and said 'i will the youther and have you have himself, and said 'i had such a mand the sky and extinged to the went and said the little bed, but when they had beard a would brought to the fore, and at last as belors to speak of go at i\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 2 Step 19 processed (Perplexity: 8.34).\n",
      "Document 19 Step 19 processed (Perplexity: 3.61).\n",
      "Document 9 Step 19 processed (Perplexity: 6.74).\n",
      "Document 15 Step 19 processed (Perplexity: 12.75).\n",
      "Document 16 Step 19 processed (Perplexity: 3.76).\n",
      "Average loss at step 19: 1.836467\n",
      "\tPerplexity at step 19: 6.274332\n",
      "\n",
      "Valid Perplexity: 46.61\n",
      "\n",
      "Generated Text after epoch 18 ... \n",
      "======================== New text Segment ==========================\n",
      "\t girl whey a mantle do fret dead took her mantle said, what that she thought thin the ravess that she might before them.  but the youth\n",
      "begged for a hearing, and said, she stole into my room in the\n",
      "night and questioned me, otherwise she could not have\n",
      "discovered it.  the judges said, bring us a proof of this.\n",
      "then were the three mantles brought thither by the servant,\n",
      "and when the judges saw the misty-grey one which the king's\n",
      "daughter usually wore, they said, let the mantle be\n",
      "embroidered with gold and silver, and then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  then it will be your\n",
      "wedding-mantle.  \n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 1 Step 20 processed (Perplexity: 5.68).\n",
      "Document 16 Step 20 processed (Perplexity: 2.37).\n",
      "Document 13 Step 20 processed (Perplexity: 11.09).\n",
      "Document 5 Step 20 processed (Perplexity: 13.41).\n",
      "Document 15 Step 20 processed (Perplexity: 8.69).\n",
      "Average loss at step 20: 1.952932\n",
      "\tPerplexity at step 20: 7.049326\n",
      "\n",
      "Valid Perplexity: 46.23\n",
      "\n",
      "Generated Text after epoch 19 ... \n",
      "======================== New text Segment ==========================\n",
      "\t d becaughter.  the king's son was and not down to put he wore on, and the true bride to be cried -\n",
      "     turn to be down, and there she was to be came for a biddent to the peach, and the king's son had however, and the king's son had down into the good out too his one was and go her and peep, and the pigeons pecked out the other eye from each.  and thus, when the shoe,\n",
      "     the shoe is not the shor.\n",
      "the the king's sone bring out too one into there, one the true bride to be cried -\n",
      "     turn and peep, and the pigeons pecked out the other eye from each.  and thus, when the shoe,\n",
      "     the shoe is not the shor.\n",
      "the the king's sone bring out too one into there, one the true bride to be cried -\n",
      "     turn and peep, and the pigeons pecked out the other eye from each.  and thus, when the shoe,\n",
      "     the shoe is not the shor.\n",
      "the the king's sone bring out too one into there, one the true bride to be cried -\n",
      "     turn and peep, and the pigeons pecked out the other eye from each.  and thus, when the shoe,\n",
      "     the shoe is not the shor.\n",
      "the the king's sone bring out too one into there, one the true bride to be cried -\n",
      "     turn and peep, and the pigeons pecked out the other eye from each.  and thus, when the shoe,\n",
      "     the shoe is not the shor.\n",
      "the the king's sone bring out too one into there, one the true bride to be cried -\n",
      "     turn and peep, and the pigeons pecked out the other eye from each.  and thus, when the shoe,\n",
      "     the shoe is not the shor.\n",
      "the the king's sone bring out too one into there, one the true bride to be cried -\n",
      "     turn and peep, and the pigeons pecked out the other eye from each.  and thus, when the shoe,\n",
      "     the shoe is not the shor.\n",
      "the the king's sone bring out too one into there, one the true bride to be cried -\n",
      "     turn and peep, and the pigeons pecked out the other eye from each.  and thus, when the shoe,\n",
      "     the shoe is not the shor.\n",
      "the the king's sone bring out too one into there, one the true bride to be cried -\n",
      "     turn and peep, and the pigeo\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 17 Step 21 processed (Perplexity: 6.79).\n",
      "Document 0 Step 21 processed (Perplexity: 5.79).\n",
      "Document 5 Step 21 processed (Perplexity: 6.96).\n",
      "Document 2 Step 21 processed (Perplexity: 14.50).\n",
      "Document 15 Step 21 processed (Perplexity: 6.78).\n",
      "Average loss at step 21: 2.039934\n",
      "\tPerplexity at step 21: 7.690100\n",
      "\n",
      "Valid Perplexity: 41.73\n",
      "\n",
      "Generated Text after epoch 20 ... \n",
      "======================== New text Segment ==========================\n",
      "\t her daughter, and wanted to get into the shoe,\n",
      "     the king's son with her.  then he had too you lost, and the king's sone the twelve, but the king's son had have her and beautiful maiden and paid out to the didss and went into the shoe, and that he saway, and the king's son was to be celebrated, and then the king's son his horse and rode away with her.  then he had too you lost, and the king's sone the twelve, but the king's son had have her and beautiful maiden and paid out to the didss and went into the shoe, and that he saway, and the king's son was to be celebrated, and then the king's son his horse and rode away with her.  then he had too you lost, and the king's sone the twelve, but the king's son had have her and beautiful maiden and paid out to the didss and went into the shoe, and that he saway, and the king's son was to be celebrated, and then the king's son his horse and rode away with her.  then he had too you lost, and the king's sone the twelve, but the king's son had have her and beautiful maiden and paid out to the didss and went into the shoe, and that he saway, and the king's son was to be celebrated, and then the king's son his horse and rode away with her.  then he had too you lost, and the king's sone the twelve, but the king's son had have her and beautiful maiden and paid out to the didss and went into the shoe, and that he saway, and the king's son was to be celebrated, and then the king's son his horse and rode away with her.  then he had too you lost, and the king's sone the twelve, but the king's son had have her and beautiful maiden and paid out to the didss and went into the shoe, and that he saway, and the king's son was to be celebrated, and then the king's son his horse and rode away with her.  then he had too you lost, and the king's sone the twelve, but the king's son had have her and beautiful maiden and paid out to the didss and went into the shoe, and that he saway, and the king's son was to be celebrated, and then the king's son\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 5 Step 22 processed (Perplexity: 4.49).\n",
      "Document 10 Step 22 processed (Perplexity: 4.63).\n",
      "Document 14 Step 22 processed (Perplexity: 15.63).\n",
      "Document 6 Step 22 processed (Perplexity: 10.18).\n",
      "Document 3 Step 22 processed (Perplexity: 8.64).\n",
      "Average loss at step 22: 2.051843\n",
      "\tPerplexity at step 22: 7.782231\n",
      "\n",
      "Valid Perplexity: 42.74\n",
      "\n",
      "Generated Text after epoch 21 ... \n",
      "======================== New text Segment ==========================\n",
      "\t ,\n",
      "who was still no gother mother, and jumped on the mother, and she has had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had had ha\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 7 Step 23 processed (Perplexity: 8.74).\n",
      "Document 2 Step 23 processed (Perplexity: 11.98).\n",
      "Document 13 Step 23 processed (Perplexity: 8.45).\n",
      "Document 0 Step 23 processed (Perplexity: 4.80).\n",
      "Document 8 Step 23 processed (Perplexity: 5.85).\n",
      "Average loss at step 23: 2.024251\n",
      "\tPerplexity at step 23: 7.570437\n",
      "\n",
      "Valid Perplexity: 43.30\n",
      "\n",
      "Generated Text after epoch 22 ... \n",
      "======================== New text Segment ==========================\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\t m whice rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapunzel, rapu\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 3 Step 24 processed (Perplexity: 5.25).\n",
      "Document 12 Step 24 processed (Perplexity: 7.55).\n",
      "Document 10 Step 24 processed (Perplexity: 3.74).\n",
      "Document 16 Step 24 processed (Perplexity: 4.28).\n",
      "Document 8 Step 24 processed (Perplexity: 3.96).\n",
      "Average loss at step 24: 1.565847\n",
      "\tPerplexity at step 24: 4.786730\n",
      "\n",
      "Valid Perplexity: 56.89\n",
      "\n",
      "Generated Text after epoch 23 ... \n",
      "======================== New text Segment ==========================\n",
      "\t willow\n",
      "it mine.\n",
      "\n",
      "she was not to down to one were, but the chamcend the king's son was beside that she had given birth, a boy and a girl, lived in wretchedness.  he\n",
      "heard a voice, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears went to the door, but romise, but moment, i will your nexting, and when he snip, snake the one with it, and the manten and when he was to fastliever a weeding.  then under ought, and said he, and cried mome.  when he said the ravening the king's son was beside that she had given birth, a boy and a girl, lived in wretchedness.  he\n",
      "heard a voice, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears went to the door, but romise, but moment, i will your nexting, and when he snip, snake the one with it, and the manten and when he was to fastliever a weeding.  then under ought, and said he, and cried mome.  when he said the ravening the king's son was beside that she had given birth, a boy and a girl, lived in wretchedness.  he\n",
      "heard a voice, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears went to the door, but romise, but moment, i will your nexting, and when he snip, snake the one with it, and the manten and when he was to fastliever a weeding.  then under ought, and said he, and cried mome.  when he said the ravening the king's son was beside that she had given birth, a boy and a girl, lived in wretchedness.  he\n",
      "heard a voice, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears went to the door, but romise, but moment, i will your nexting, and when he snip, snake the one with it, and the manten and when he was to fastliever a weeding.  then under ought, and sai\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 2 Step 25 processed (Perplexity: 11.25).\n",
      "Document 11 Step 25 processed (Perplexity: 15.47).\n",
      "Document 5 Step 25 processed (Perplexity: 7.45).\n",
      "Document 12 Step 25 processed (Perplexity: 5.48).\n",
      "Document 15 Step 25 processed (Perplexity: 8.49).\n",
      "Average loss at step 25: 2.201447\n",
      "\tPerplexity at step 25: 9.038086\n",
      "\n",
      "Valid Perplexity: 43.77\n",
      "\n",
      "Generated Text after epoch 24 ... \n",
      "======================== New text Segment ==========================\n",
      "\t rmed to the maiden and the pigeons pecked out her days of the true bride was at the other the other the other the other the king's sone you will not the other, and then the pigeons\n",
      "pecked out the other eye from each.  and thus should have the shoe, and the pigeons pecked out her days of the true bride was at the other the other the other the other the king's sone you will not the other, and then the pigeons\n",
      "pecked out the other eye from each.  and thus should have the shoe, and the pigeons pecked out her days of the true bride was at the other the other the other the other the king's sone you will not the other, and then the pigeons\n",
      "pecked out the other eye from each.  and thus should have the shoe, and the pigeons pecked out her days of the true bride was at the other the other the other the other the king's sone you will not the other, and then the pigeons\n",
      "pecked out the other eye from each.  and thus should have the shoe, and the pigeons pecked out her days of the true bride was at the other the other the other the other the king's sone you will not the other, and then the pigeons\n",
      "pecked out the other eye from each.  and thus should have the shoe, and the pigeons pecked out her days of the true bride was at the other the other the other the other the king's sone you will not the other, and then the pigeons\n",
      "pecked out the other eye from each.  and thus should have the shoe, and the pigeons pecked out her days of the true bride was at the other the other the other the other the king's sone you will not the other, and then the pigeons\n",
      "pecked out the other eye from each.  and thus should have the shoe, and the pigeons pecked out her days of the true bride was at the other the other the other the other the king's sone you will not the other, and then the pigeons\n",
      "pecked out the other eye from each.  and thus should have the shoe, and the pigeons pecked out her days of the true bride was at the other the other the other the other the king's sone you will not the other, an\n",
      "====================================================================\n",
      "\n",
      "\n",
      "\n",
      "Document 13 Step 26 processed (Perplexity: 7.15).\n",
      "Document 4 Step 26 processed (Perplexity: 12.07).\n",
      "Document 10 Step 26 processed (Perplexity: 3.27).\n",
      "Document 14 Step 26 processed (Perplexity: 14.03).\n",
      "Document 8 Step 26 processed (Perplexity: 4.16).\n",
      "Average loss at step 26: 1.941269\n",
      "\tPerplexity at step 26: 6.967586\n",
      "\n",
      "Valid Perplexity: 54.36\n",
      "\n",
      "Generated Text after epoch 25 ... \n",
      "======================== New text Segment ==========================\n",
      "\t but which was listleng in the quite blind about the forest, ate nothing but roots and\n",
      "berries, and did naught but lament and weep over the loss of his\n",
      "dearest wife.  thus he roamed about in misery for your happree, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears wentingle into the loss of his\n",
      "dearest wife.  thus he roamed about in misery for your happree, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears wentingle into the loss of his\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dearest wife.  thus he roamed about in misery for your happree, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears wentingle into the loss of his\n",
      "dearest wife.  thus he roamed about in misery for your happree, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears wentingle into the loss of his\n",
      "dearest wife.  thus he roamed about in misery for your happree, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears wentingle into the loss of his\n",
      "dearest wife.  thus he roamed about in misery for your happree, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears wentingle into the loss of his\n",
      "dearest wife.  thus he roamed about in misery for your happree, and it seemed so familiar to him that he went towards\n",
      "it, and when he approached, rapunzel knew him and fell on his neck\n",
      "and wept.  two of her tears wentingle into the loss of his\n",
      "dearest wife.  thus he roamed about in misery for your happree, and it seemed so familiar to him that he went towards\n",
      "it, and when he approache\n",
      "====================================================================\n",
      "\n"
     ]
    }
   ],
   "source": [
    "num_steps = 26 # Number of steps we run the algorithm for\n",
    "# How many training steps are performed for each document in a single step\n",
    "steps_per_document = 100 \n",
    "\n",
    "# How often we run validation\n",
    "valid_summary = 1\n",
    "\n",
    "# In the book we run tests with this set to both 20 and 100\n",
    "train_doc_count = 20\n",
    "# Number of docs we use in a single step\n",
    "# When train_doc_count = 20 => train_docs_to_use = 5\n",
    "# # When train_doc_count = 100 => train_docs_to_use = 10\n",
    "train_docs_to_use =5 \n",
    "\n",
    "# Store the training and validation perplexity at each step\n",
    "valid_perplexity_ot = []\n",
    "train_perplexity_ot = []\n",
    "\n",
    "session = tf.InteractiveSession()\n",
    "# Initializing variables\n",
    "tf.global_variables_initializer().run()\n",
    "\n",
    "print('Initialized')\n",
    "average_loss = 0\n",
    "\n",
    "# We use the first 10 documents that has \n",
    "# more than (num_steps+1)*steps_per_document bigrams for creating the validation dataset\n",
    "\n",
    "# Identify the first 10 documents following the above condition\n",
    "long_doc_ids = []\n",
    "for di in range(num_files):\n",
    "  if len(data_list[di])>(num_steps+1)*steps_per_document:\n",
    "    long_doc_ids.append(di)\n",
    "  if len(long_doc_ids)==10:\n",
    "    break\n",
    "\n",
    "# Generating validation data\n",
    "data_gens = []\n",
    "valid_gens = []\n",
    "for fi in range(num_files):\n",
    "  # Get all the bigrams if the document id is not in the validation document ids\n",
    "  if fi not in long_doc_ids:\n",
    "    data_gens.append(DataGeneratorOHE(data_list[fi],batch_size,num_unroll))\n",
    "  # if the document is in the validation doc ids, only get up to the \n",
    "  # last steps_per_document bigrams and use the last steps_per_document bigrams as validation data\n",
    "  else:\n",
    "    data_gens.append(DataGeneratorOHE(data_list[fi][:-steps_per_document],batch_size,num_unroll))\n",
    "    # Defining the validation data generator\n",
    "    valid_gens.append(DataGeneratorOHE(data_list[fi][-steps_per_document:],1,1))\n",
    "\n",
    "\n",
    "feed_dict = {}\n",
    "for step in range(num_steps):\n",
    "    print('\\n')\n",
    "    for di in np.random.permutation(train_doc_count)[:train_docs_to_use]:                    \n",
    "        doc_perplexity = 0\n",
    "        for doc_step_id in range(steps_per_document):\n",
    "            \n",
    "            # Get a set of unrolled batches\n",
    "            u_data, u_labels = data_gens[di].unroll_batches()\n",
    "            \n",
    "            # Populate the feed dict by using each of the data batches\n",
    "            # present in the unrolled data\n",
    "            for ui,(dat,lbl) in enumerate(zip(u_data,u_labels)):            \n",
    "                feed_dict[train_dataset[ui]]=dat\n",
    "                feed_dict[train_labels[ui]] = lbl            \n",
    "            \n",
    "            # Running the TensorFlow operation\n",
    "            _, l, step_predictions, _, step_labels, step_perplexity = \\\n",
    "            session.run([rnn_optimizer, rnn_loss, y_predictions,\n",
    "                         train_dataset,train_labels,train_perplexity_without_exp], \n",
    "                        feed_dict=feed_dict)\n",
    "            \n",
    "            # Update doc perplexity variable\n",
    "            doc_perplexity += step_perplexity\n",
    "            # Update average step perplexity \n",
    "            average_loss += step_perplexity\n",
    "                \n",
    "        print('Document %d Step %d processed (Perplexity: %.2f).'\n",
    "              %(di,step+1,np.exp(doc_perplexity/steps_per_document))\n",
    "             )\n",
    "        \n",
    "        # resetting hidden state after processing a single document\n",
    "        # It's still questionable if this adds value in terms of learning\n",
    "        # One one hand it's intuitive to reset the state when learning a new document\n",
    "        # On the other hand this approach creates a bias for the state to be zero\n",
    "        # We encourage the reader to investigate further the effect of resetting the state\n",
    "        session.run(reset_train_h_op) \n",
    "    \n",
    "    # Validation phase\n",
    "    if step % valid_summary == 0:\n",
    "      \n",
    "      # Compute average loss\n",
    "      average_loss = average_loss / (train_docs_to_use*steps_per_document*valid_summary)\n",
    "      \n",
    "      print('Average loss at step %d: %f' % (step+1, average_loss))\n",
    "      print('\\tPerplexity at step %d: %f' %(step+1, np.exp(average_loss)))\n",
    "      train_perplexity_ot.append(np.exp(average_loss))\n",
    "      \n",
    "      average_loss = 0 # reset loss\n",
    "      \n",
    "      valid_loss = 0 # reset loss\n",
    "      \n",
    "      # calculate valid perplexity\n",
    "      for v_doc_id in range(10):\n",
    "          # Remember we process things as bigrams\n",
    "          # So need to divide by 2\n",
    "          for v_step in range(steps_per_document//2):\n",
    "            uvalid_data,uvalid_labels = valid_gens[v_doc_id].unroll_batches()        \n",
    "\n",
    "            # Run validation phase related TensorFlow operations       \n",
    "            v_perp = session.run(\n",
    "                valid_perplexity_without_exp,\n",
    "                feed_dict = {valid_dataset:uvalid_data[0],valid_labels: uvalid_labels[0]}\n",
    "            )\n",
    "\n",
    "            valid_loss += v_perp\n",
    "            \n",
    "          session.run(reset_valid_h_op)\n",
    "          # Reset validation data generator cursor\n",
    "          valid_gens[v_doc_id].reset_indices()    \n",
    "    \n",
    "      print()\n",
    "      v_perplexity = np.exp(valid_loss/(steps_per_document*10.0//2))\n",
    "      print(\"Valid Perplexity: %.2f\\n\"%v_perplexity)\n",
    "      valid_perplexity_ot.append(v_perplexity)\n",
    "        \n",
    "      # Generating new text ...\n",
    "      # We will be generating one segment having 1000 bigrams\n",
    "      # Feel free to generate several segments by changing\n",
    "      # the value of segments_to_generate\n",
    "      print('Generated Text after epoch %d ... '%step)  \n",
    "      segments_to_generate = 1\n",
    "      chars_in_segment = 1000\n",
    "    \n",
    "      for _ in range(segments_to_generate):\n",
    "        print('======================== New text Segment ==========================')\n",
    "        # Start with a random word\n",
    "        test_word = np.zeros((1,in_size),dtype=np.float32)\n",
    "        test_word[0,data_list[np.random.randint(0,num_files)][np.random.randint(0,100)]] = 1.0\n",
    "        print(\"\\t\",reverse_dictionary[np.argmax(test_word[0])],end='')\n",
    "        \n",
    "        # Generating words within a segment by feeding in the previous prediction\n",
    "        # as the current input in a recursive manner\n",
    "        for _ in range(chars_in_segment):    \n",
    "          test_pred = session.run(test_prediction, feed_dict = {test_dataset:test_word})  \n",
    "          next_ind = sample(test_pred.ravel())\n",
    "          test_word = np.zeros((1,in_size),dtype=np.float32)\n",
    "          test_word[0,next_ind] = 1.0\n",
    "          print(reverse_dictionary[next_ind],end='')\n",
    "        \n",
    "        print(\"\")\n",
    "        # Reset test state\n",
    "        session.run(reset_test_h_op)\n",
    "        print('====================================================================')\n",
    "      print(\"\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plotting Perplexity of RNN\n",
    "\n",
    "After training the RNN, we plot the train and valid perplexity side by side"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f940daa978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_axis = np.arange(len(train_perplexity_ot[1:25]))\n",
    "f,(ax1,ax2)=pylab.subplots(1,2,figsize=(18,6))\n",
    "\n",
    "ax1.plot(x_axis,train_perplexity_ot[1:25],label='Train')\n",
    "ax2.plot(x_axis, valid_perplexity_ot[1:25], label='Valid')\n",
    "\n",
    "pylab.title('Train and Valid Perplexity over Time',fontsize=24)\n",
    "ax1.set_title('Train Perplexity',fontsize=20)\n",
    "ax2.set_title('Valid Perplexity',fontsize=20)\n",
    "ax1.set_xlabel('Epoch',fontsize=20)\n",
    "ax2.set_xlabel('Epoch',fontsize=20)\n",
    "pylab.savefig('RNN_perplexity.png')\n",
    "pylab.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## RNN-CF - RNN with Contextual Features\n",
    "\n",
    "Here we implement an extension of RNN which is described in this [paper](https://arxiv.org/pdf/1412.7753.pdf). RNN-CF differs from a standard RNN as the RNN-CF has two different states and one state is specifically designed to retain long term memory."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining Hyperparameters\n",
    "\n",
    "Here we define several hyperparameters required.\n",
    "* `num_unroll`: Number of steps we unroll over time during optimizing\n",
    "* `batch_size`: Number of datapoints in a single batch\n",
    "* `hidden`: Number of hidden neurons in the state\n",
    "* `hidden_context`: Number of hidden neurons in the context vector\n",
    "* `alpha` : RNN-CF specific hyperparameter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "tf.reset_default_graph()\n",
    "\n",
    "# Number of steps to unroll\n",
    "num_unroll = 50\n",
    "\n",
    "batch_size = 64 # At train time\n",
    "test_batch_size = 1 # At test time\n",
    "\n",
    "# Number of hidden neurons in each state\n",
    "hidden = 64\n",
    "hidden_context = 64\n",
    "\n",
    "alpha = 0.9\n",
    "\n",
    "# Input size and output Size\n",
    "in_size,out_size = vocabulary_size,vocabulary_size"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining Inputs and Outputs\n",
    "Here we define training inputs (`train_dataset`) and outputs (`train_labels`), validation inputs (`valid_dataset`) and outputs (`valid_labels`) and test inputs (`test_dataset`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Train dataset\n",
    "# We use unrolling over time\n",
    "train_dataset, train_labels = [],[]\n",
    "for ui in range(num_unroll):\n",
    "    train_dataset.append(tf.placeholder(tf.float32, shape=[batch_size,in_size],name='train_dataset_%d'%ui))\n",
    "    train_labels.append(tf.placeholder(tf.float32, shape=[batch_size,out_size],name='train_labels_%d'%ui))\n",
    "\n",
    "# Validation dataset \n",
    "valid_dataset = tf.placeholder(tf.float32, shape=[1,in_size],name='valid_dataset')\n",
    "valid_labels = tf.placeholder(tf.float32, shape=[1,out_size],name='valid_labels')\n",
    "\n",
    "# Test dataset\n",
    "test_dataset = tf.placeholder(tf.float32, shape=[test_batch_size,in_size],name='save_test_dataset')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining Model Parameters and Other Variables\n",
    "Here we define model parameters. First we define `A`,`B`,`R`,`P`,`U` and `V`. We also define a variable to maintain the hidden state. Each phase of training/validation/testing will have two state variables. For example for training we have `prev_train_h` and `prev_train_s`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Weights between inputs and h\n",
    "A = tf.Variable(tf.truncated_normal([in_size,hidden],stddev=0.02,dtype=tf.float32),name='W_xh')\n",
    "B = tf.Variable(tf.truncated_normal([in_size,hidden_context],stddev=0.02,dtype=tf.float32),name='W_xs')\n",
    "\n",
    "# Weights between h and h\n",
    "R = tf.Variable(tf.truncated_normal([hidden,hidden],stddev=0.02,dtype=tf.float32),name='W_hh')\n",
    "P = tf.Variable(tf.truncated_normal([hidden_context,hidden],stddev=0.02,dtype=tf.float32),name='W_ss')\n",
    "\n",
    "# Weights between h and y\n",
    "U = tf.Variable(tf.truncated_normal([hidden,out_size],stddev=0.02,dtype=tf.float32),name='W_hy')\n",
    "V = tf.Variable(tf.truncated_normal([hidden_context, out_size],stddev=0.02,dtype=tf.float32),name='W_sy')\n",
    "\n",
    "# State variables for training data\n",
    "prev_train_h = tf.Variable(tf.zeros([batch_size,hidden],dtype=tf.float32),name='train_h',trainable=False)\n",
    "prev_train_s = tf.Variable(tf.zeros([batch_size,hidden_context],dtype=tf.float32),name='train_s',trainable=False)\n",
    "\n",
    "# State variables for validation data\n",
    "prev_valid_h = tf.Variable(tf.zeros([1,hidden],dtype=tf.float32),name='valid_h',trainable=False)\n",
    "prev_valid_s = tf.Variable(tf.zeros([1,hidden_context],dtype=tf.float32),name='valid_s',trainable=False)\n",
    "\n",
    "# State variables for test data\n",
    "prev_test_h = tf.Variable(tf.zeros([test_batch_size,hidden],dtype=tf.float32),name='test_h')\n",
    "prev_test_s = tf.Variable(tf.zeros([test_batch_size,hidden_context],dtype=tf.float32),name='test_s')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining Inference of the RNN\n",
    "This is the most crucial bit of RNN and what makes it different from feed forward networks. Here we define operations related to:\n",
    "* Calculating training/validation/test hidden outputs (h and s)\n",
    "* Calculating training/validation/test predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# ===============================================================================\n",
    "# Train score (unnormalized) values and predictions (normalized)\n",
    "y_scores, y_predictions = [],[]\n",
    "\n",
    "# These will be iteratively used within num_unroll steps of calculation\n",
    "next_h_state = prev_train_h\n",
    "next_s_state = prev_train_s\n",
    "\n",
    "# Appending the calculated state outputs of RNN for each step in the num_unroll steps\n",
    "next_h_states_unrolled, next_s_states_unrolled = [],[]\n",
    "\n",
    "# Calculating the output of the RNN for num_unroll steps\n",
    "# (as required by the truncated BPTT)\n",
    "for ui in range(num_unroll):      \n",
    "    next_h_state = tf.nn.tanh(\n",
    "        tf.matmul(tf.concat([train_dataset[ui],prev_train_h,prev_train_s],1),\n",
    "                  tf.concat([A,R,P],0))\n",
    "    )    \n",
    "    next_s_state = (1-alpha)*tf.matmul(train_dataset[ui],B) + alpha * next_s_state\n",
    "    next_h_states_unrolled.append(next_h_state)\n",
    "    next_s_states_unrolled.append(next_s_state)\n",
    "\n",
    "# Get the scores and predictions for all the RNN outputs we produced for num_unroll steps\n",
    "y_scores = [tf.matmul(next_h_states_unrolled[ui],U) + \n",
    "            tf.matmul(next_s_states_unrolled[ui],V) \n",
    "             for ui in range(num_unroll)]\n",
    "y_predictions = [tf.nn.softmax(y_scores[ui]) for ui in range(num_unroll)]\n",
    "\n",
    "# We calculate train perplexity with the predictions made by the RNN\n",
    "train_perplexity_without_exp = tf.reduce_sum(tf.concat(train_labels,0)*-tf.log(tf.concat(y_predictions,0)+1e-10))/(num_unroll*batch_size)\n",
    "\n",
    "# ===============================================================================\n",
    "# Validation data related inference logic \n",
    "# (very similar to the training inference logic)\n",
    "\n",
    "# Compute the next valid state (only for 1 step)\n",
    "next_valid_s_state = (1-alpha) * tf.matmul(valid_dataset,B) + alpha * prev_valid_s\n",
    "next_valid_h_state = tf.nn.tanh(tf.matmul(valid_dataset,A)  + \n",
    "                                tf.matmul(prev_valid_s, P) +\n",
    "                                tf.matmul(prev_valid_h,R))\n",
    "\n",
    "\n",
    "# Calculate the prediction using the state output of the RNN\n",
    "# But before that, assign the latest state output of the RNN\n",
    "# to the state variable of the validation phase\n",
    "# So you need to make sure you execute rnn_valid_loss operation\n",
    "# To update the validation state\n",
    "with tf.control_dependencies([tf.assign(prev_valid_s, next_valid_s_state),\n",
    "                              tf.assign(prev_valid_h,next_valid_h_state)]):        \n",
    "    valid_scores = tf.matmul(prev_valid_h, U) + tf.matmul(prev_valid_s, V) \n",
    "    valid_predictions = tf.nn.softmax(valid_scores)\n",
    "        \n",
    "# Validation data related perplexity\n",
    "valid_perplexity_without_exp = tf.reduce_sum(valid_labels*-tf.log(valid_predictions+1e-10))\n",
    "\n",
    "# ===============================================================================\n",
    "# Test data realted inference logic\n",
    "\n",
    "# Calculating hidden output for test data\n",
    "next_test_s = (1-alpha)*tf.matmul(test_dataset,B)+ alpha*prev_test_s\n",
    "                         \n",
    "next_test_h = tf.nn.tanh(\n",
    "    tf.matmul(test_dataset,A) + tf.matmul(prev_test_s,P) + \n",
    "    tf.matmul(prev_test_h, R)\n",
    "                         )\n",
    "\n",
    "# Making sure that the test hidden state is updated \n",
    "# every time we make a prediction\n",
    "with tf.control_dependencies([tf.assign(prev_test_s,next_test_s),\n",
    "                              tf.assign(prev_test_h,next_test_h)]):\n",
    "    test_prediction = tf.nn.softmax(\n",
    "        tf.matmul(prev_test_h,U) + tf.matmul(prev_test_s,V)\n",
    "    ) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Calculating RNN Loss\n",
    "We calculate the training and validation loss of RNN here. It's a typical cross entropy loss calculated over all the scores we obtained for training data (`rnn_loss`) and validation data (`rnn_valid_loss`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Here we make sure that before calculating the loss, the state variables are updated\n",
    "# with the last RNN output state we obtained\n",
    "with tf.control_dependencies([tf.assign(prev_train_s, next_s_state),\n",
    "                              tf.assign(prev_train_h,next_h_state)]):\n",
    "    rnn_loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(\n",
    "        logits=tf.concat(y_scores,0), labels=tf.concat(train_labels,0)\n",
    "    ))\n",
    "        \n",
    "rnn_valid_loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(\n",
    "           logits=valid_scores, labels=valid_labels))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Defining Learning Rate and the Optimizer with Gradient Clipping\n",
    "Here we define the learning rate and the optimizer we're going to use. We will be using the Adam optimizer as it is one of the best optimizers out there. Furthermore we use gradient clipping to prevent any gradient explosions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "rnn_optimizer = tf.train.AdamOptimizer(learning_rate=.001)\n",
    "\n",
    "gradients, v = zip(*rnn_optimizer.compute_gradients(rnn_loss))\n",
    "gradients, _ = tf.clip_by_global_norm(gradients, 5.0)\n",
    "rnn_optimizer = rnn_optimizer.apply_gradients(zip(gradients, v))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Resetting Operations for Resetting Hidden States\n",
    "Sometimes the state variable needs to be reset (e.g. when starting predictions at a beginning of a new epoch)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "reset_prev_train_h_op = tf.assign(prev_train_h,tf.zeros([batch_size,hidden],dtype=tf.float32))\n",
    "reset_prev_train_s_op = tf.assign(prev_train_s,tf.zeros([batch_size,hidden_context],dtype=tf.float32))\n",
    "\n",
    "reset_valid_h_op = tf.assign(prev_valid_h,tf.zeros([1,hidden],dtype=tf.float32))\n",
    "reset_valid_s_op = tf.assign(prev_valid_s,tf.zeros([1,hidden_context],dtype=tf.float32))\n",
    "\n",
    "# Impute the testing states with noise\n",
    "reset_test_h_op = tf.assign(prev_test_h,tf.truncated_normal([test_batch_size,hidden],stddev=0.01,dtype=tf.float32))\n",
    "reset_test_s_op = tf.assign(prev_test_s,tf.truncated_normal([test_batch_size,hidden_context],stddev=0.01,dtype=tf.float32))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Running the RNN-CF to Generate Text\n",
    "\n",
    "Here we train the RNN on the available data and generate text using the trained RNN for several steps. First we create a validation set by extracting text snippets (that are not present in training data) from longer documents. Then at each training step, we train the RNN on several randomly picked documents. From each document we extract text for `steps_per_document` steps. We also report the train and validation perplexities at the end of each step. Finally we test the RNN by asking it to generate some new text starting from a randomly picked bigram."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\thushan\\documents\\python_virtualenvs\\tensorflow_venv\\lib\\site-packages\\tensorflow\\python\\client\\session.py:1711: UserWarning: An interactive session is already active. This can cause out-of-memory errors in some cases. You must explicitly call `InteractiveSession.close()` to release resources held by the other session(s).\n",
      "  warnings.warn('An interactive session is already active. This can '\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initialized\n",
      "\n",
      "\n",
      "Document 11 Step 1 processed (Perplexity: 235.24).\n",
      "Document 1 Step 1 processed (Perplexity: 166.14).\n",
      "Document 8 Step 1 processed (Perplexity: 141.38).\n",
      "Document 5 Step 1 processed (Perplexity: 90.15).\n",
      "Document 52 Step 1 processed (Perplexity: 42.38).\n",
      "Document 56 Step 1 processed (Perplexity: 24.69).\n",
      "Document 43 Step 1 processed (Perplexity: 33.47).\n",
      "Document 49 Step 1 processed (Perplexity: 30.25).\n",
      "Document 0 Step 1 processed (Perplexity: 29.55).\n",
      "Document 63 Step 1 processed (Perplexity: 28.88).\n",
      "Average loss at step 1: 4.064881\n",
      "\tPerplexity at step 1: 58.257949\n",
      "\n",
      "Valid Perplexity: 40.58\n",
      "\n",
      "Generated Text after epoch 0 ... \n",
      "======================== New text Segment ==========================\n",
      "\t they was then the forest then the forest then the forest therest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestrest, and the forestre\n",
      "\n",
      "\n",
      "\n",
      "Document 6 Step 2 processed (Perplexity: 26.74).\n",
      "Document 60 Step 2 processed (Perplexity: 31.95).\n",
      "Document 97 Step 2 processed (Perplexity: 24.32).\n",
      "Document 71 Step 2 processed (Perplexity: 17.16).\n",
      "Document 94 Step 2 processed (Perplexity: 20.15).\n",
      "Document 73 Step 2 processed (Perplexity: 23.00).\n",
      "Document 86 Step 2 processed (Perplexity: 18.13).\n",
      "Document 12 Step 2 processed (Perplexity: 19.99).\n",
      "Document 30 Step 2 processed (Perplexity: 12.32).\n",
      "Document 2 Step 2 processed (Perplexity: 29.68).\n",
      "Average loss at step 2: 3.071690\n",
      "\tPerplexity at step 2: 21.578345\n",
      "\n",
      "Valid Perplexity: 33.27\n",
      "\n",
      "Generated Text after epoch 1 ... \n",
      "======================== New text Segment ==========================\n",
      "\t ong you are, and the yould have to himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and the wented himself and then the to there, and \n",
      "\n",
      "\n",
      "\n",
      "Document 21 Step 3 processed (Perplexity: 21.37).\n",
      "Document 68 Step 3 processed (Perplexity: 21.29).\n",
      "Document 61 Step 3 processed (Perplexity: 23.20).\n",
      "Document 10 Step 3 processed (Perplexity: 13.06).\n",
      "Document 3 Step 3 processed (Perplexity: 16.81).\n",
      "Document 40 Step 3 processed (Perplexity: 21.67).\n",
      "Document 19 Step 3 processed (Perplexity: 16.94).\n",
      "Document 30 Step 3 processed (Perplexity: 6.27).\n",
      "Document 6 Step 3 processed (Perplexity: 17.67).\n",
      "Document 2 Step 3 processed (Perplexity: 18.87).\n",
      "Average loss at step 3: 2.820708\n",
      "\tPerplexity at step 3: 16.788732\n",
      "\n",
      "Valid Perplexity: 32.81\n",
      "\n",
      "Generated Text after epoch 2 ... \n",
      "======================== New text Segment ==========================\n",
      "\t the firs, and man came and said the youth other and man came and said the yout, and man came and said the youth other and man came and shudder.' 'not the you could not beloudder.' then him thereat it is and and then the wented thereated the was then the warmed then the told gothers, and the man, and said the man came and said the firew and man came and said the youth other and man came and shudder.' 'not the you could not beloudder.' then him thereat it is and and then the wented thereated the was then the warmed then the told gothers, and the man, and said the man came and said the firew and man came and said the youth other and man came and shudder.' 'not the you could not beloudder.' then him thereat it is and and then the wented thereated the was then the warmed then the told gothers, and the man, and said the man came and said the firew and man came and said the youth other and man came and shudder.' 'not the you could not beloudder.' then him thereat it is and and then the wented thereated the was then the warmed then the told gothers, and the man, and said the man came and said the firew and man came and said the youth other and man came and shudder.' 'not the you could not beloudder.' then him thereat it is and and then the wented thereated the was then the warmed then the told gothers, and the man, and said the man came and said the firew and man came and said the youth other and man came and shudder.' 'not the you could not beloudder.' then him thereat it is and and then the wented thereated the was then the warmed then the told gothers, and the man, and said the man came and said the firew and man came and said the youth other and man came and shudder.' 'not the you could not beloudder.' then him thereat it is and and then the wented thereated the was then the warmed then the told gothers, and the man, and said the man came and said the firew and man came and said the youth other and man came and shudder.' 'not the you could not beloudder.' then him thereat\n",
      "\n",
      "\n",
      "\n",
      "Document 91 Step 4 processed (Perplexity: 21.91).\n",
      "Document 10 Step 4 processed (Perplexity: 7.20).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Document 55 Step 4 processed (Perplexity: 19.99).\n",
      "Document 46 Step 4 processed (Perplexity: 25.28).\n",
      "Document 33 Step 4 processed (Perplexity: 18.24).\n",
      "Document 67 Step 4 processed (Perplexity: 15.41).\n",
      "Document 47 Step 4 processed (Perplexity: 12.31).\n",
      "Document 5 Step 4 processed (Perplexity: 16.18).\n",
      "Document 53 Step 4 processed (Perplexity: 10.45).\n",
      "Document 70 Step 4 processed (Perplexity: 16.56).\n",
      "Average loss at step 4: 2.737173\n",
      "\tPerplexity at step 4: 15.443262\n",
      "\n",
      "Valid Perplexity: 36.79\n",
      "\n",
      "Generated Text after epoch 3 ... \n",
      "======================== New text Segment ==========================\n",
      "\t  for, my dear back with him to he to him, and her the king, and said, when she said that, and her that he peasand said, and her that, and said, i ame tooke took the oxen the king, and said, whent was and her the king, and said, and the king, said, i ame call, and said,\n",
      "when the she said that, and the king, and said, when she said that, and her that he peasand said, and her that, and said, i ame tooke took the oxen the king, and said, whent was and her the king, and said, and the king, said, i ame call, and said,\n",
      "when the she said that, and the king, and said, when she said that, and her that he peasand said, and her that, and said, i ame tooke took the oxen the king, and said, whent was and her the king, and said, and the king, said, i ame call, and said,\n",
      "when the she said that, and the king, and said, when she said that, and her that he peasand said, and her that, and said, i ame tooke took the oxen the king, and said, whent was and her the king, and said, and the king, said, i ame call, and said,\n",
      "when the she said that, and the king, and said, when she said that, and her that he peasand said, and her that, and said, i ame tooke took the oxen the king, and said, whent was and her the king, and said, and the king, said, i ame call, and said,\n",
      "when the she said that, and the king, and said, when she said that, and her that he peasand said, and her that, and said, i ame tooke took the oxen the king, and said, whent was and her the king, and said, and the king, said, i ame call, and said,\n",
      "when the she said that, and the king, and said, when she said that, and her that he peasand said, and her that, and said, i ame tooke took the oxen the king, and said, whent was and her the king, and said, and the king, said, i ame call, and said,\n",
      "when the she said that, and the king, and said, when she said that, and her that he peasand said, and her that, and said, i ame tooke took the oxen the king, and said, whent was and her the king, and said, and the king, said, i ame call, and sa\n",
      "\n",
      "\n",
      "\n",
      "Document 57 Step 5 processed (Perplexity: 17.20).\n",
      "Document 21 Step 5 processed (Perplexity: 16.18).\n",
      "Document 76 Step 5 processed (Perplexity: 14.98).\n",
      "Document 0 Step 5 processed (Perplexity: 13.73).\n",
      "Document 61 Step 5 processed (Perplexity: 17.69).\n",
      "Document 11 Step 5 processed (Perplexity: 21.60).\n",
      "Document 33 Step 5 processed (Perplexity: 12.62).\n",
      "Document 49 Step 5 processed (Perplexity: 13.36).\n",
      "Document 78 Step 5 processed (Perplexity: 17.66).\n",
      "Document 58 Step 5 processed (Perplexity: 5.27).\n",
      "Average loss at step 5: 2.656141\n",
      "\tPerplexity at step 5: 14.241226\n",
      "\n",
      "Valid Perplexity: 56.31\n",
      "\n",
      "Generated Text after epoch 4 ... \n",
      "======================== New text Segment ==========================\n",
      "\t  wife child, father to the did nothing if\n",
      "he did spill anything.  i am making the you doing the old ground.  then i am\n",
      "big.\n",
      "\n",
      "then the said some grandfather to the them, and likewise said nothing if\n",
      "he did spill a little of anything.  i am\n",
      "big.\n",
      "\n",
      "the man and his wife looked at eat of while, and presently\n",
      "began to cry.  then they took the old grandfather to them, and likewise said nothing if\n",
      "he did spill a little of anything.  i am\n",
      "big.\n",
      "\n",
      "the man and his wife looked at eat of while, and presently\n",
      "began to cry.  then they took the old grandfather to them, and likewise said nothing if\n",
      "he did spill a little of anything.  i am\n",
      "big.\n",
      "\n",
      "the man and his wife looked at eat of while, and presently\n",
      "began to cry.  then they took the old grandfather to them, and likewise said nothing if\n",
      "he did spill a little of anything.  i am\n",
      "big.\n",
      "\n",
      "the man and his wife looked at eat of while, and presently\n",
      "began to cry.  then they took the old grandfather to them, and likewise said nothing if\n",
      "he did spill a little of anything.  i am\n",
      "big.\n",
      "\n",
      "the man and his wife looked at eat of while, and presently\n",
      "began to cry.  then they took the old grandfather to them, and likewise said nothing if\n",
      "he did spill a little of anything.  i am\n",
      "big.\n",
      "\n",
      "the man and his wife looked at eat of while, and presently\n",
      "began to cry.  then they took the old grandfather to them, and likewise said nothing if\n",
      "he did spill a little of anything.  i am\n",
      "big.\n",
      "\n",
      "the man and his wife looked at eat of while, and presently\n",
      "began to cry.  then they took the old grandfather to them, and likewise said nothing if\n",
      "he did spill a little of anything.  i am\n",
      "big.\n",
      "\n",
      "the man and his wife looked at eat of while, and presently\n",
      "began to cry.  then they took the old grandfather to them, and likewise said nothing if\n",
      "he did spill a little of anything.  i am\n",
      "big.\n",
      "\n",
      "the man and his wife looked at eat of while, and presently\n",
      "began to cry.  then they took the old grandfather to them, and likewise said nothing if\n",
      "he did spill a little of anything.  i am\n",
      "big.\n",
      "\n",
      "the man and\n",
      "\n",
      "\n",
      "\n",
      "Document 28 Step 6 processed (Perplexity: 10.46).\n",
      "Document 27 Step 6 processed (Perplexity: 21.51).\n",
      "Document 31 Step 6 processed (Perplexity: 6.46).\n",
      "Document 83 Step 6 processed (Perplexity: 5.76).\n",
      "Document 66 Step 6 processed (Perplexity: 26.03).\n",
      "Document 52 Step 6 processed (Perplexity: 10.66).\n",
      "Document 85 Step 6 processed (Perplexity: 18.65).\n",
      "Document 88 Step 6 processed (Perplexity: 18.23).\n",
      "Document 6 Step 6 processed (Perplexity: 13.62).\n",
      "Document 47 Step 6 processed (Perplexity: 8.66).\n",
      "Average loss at step 6: 2.525582\n",
      "\tPerplexity at step 6: 12.498171\n",
      "\n",
      "Valid Perplexity: 37.43\n",
      "\n",
      "Generated Text after epoch 5 ... \n",
      "======================== New text Segment ==========================\n",
      "\t ength became to the of the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was the daughters received theirst princest of theirst princess.  then the king's daughters daughters receivered theirst princess.  then the king was th\n",
      "\n",
      "\n",
      "\n",
      "Document 45 Step 7 processed (Perplexity: 19.11).\n",
      "Document 43 Step 7 processed (Perplexity: 11.75).\n",
      "Document 92 Step 7 processed (Perplexity: 12.38).\n",
      "Document 81 Step 7 processed (Perplexity: 28.75).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Document 14 Step 7 processed (Perplexity: 21.01).\n",
      "Document 58 Step 7 processed (Perplexity: 3.34).\n",
      "Document 25 Step 7 processed (Perplexity: 15.56).\n",
      "Document 67 Step 7 processed (Perplexity: 12.56).\n",
      "Document 85 Step 7 processed (Perplexity: 13.05).\n",
      "Document 79 Step 7 processed (Perplexity: 9.12).\n",
      "Average loss at step 7: 2.559466\n",
      "\tPerplexity at step 7: 12.928913\n",
      "\n",
      "Valid Perplexity: 43.55\n",
      "\n",
      "Generated Text after epoch 6 ... \n",
      "======================== New text Segment ==========================\n",
      "\t  every\n",
      "lays, come of the paddock child some back\n",
      "wout ith its out, whereupon the child she come ould saw have you.                                                                         iUNK\n",
      "the paddock cries, huhuhu, huhu, huhu, huhu, huhuhu, hu, huhuhu, huhu, huhu, huhu, huhu, huhuhu, and smays out, whichild the paddock comes out, whereupon the child secone little\n",
      "sister, have you not seen little red-stockings.  the paddock says,\n",
      "no, i have not.  have you.                                                                         iUNK\n",
      "the paddock cries, huhuhu, huhu, huhu, huhu, huhuhu, hu, huhuhu, huhu, huhu, huhu, huhu, huhuhu, and smays out, whichild the paddock comes out, whereupon the child secone little\n",
      "sister, have you not seen little red-stockings.  the paddock says,\n",
      "no, i have not.  have you.                                                                         iUNK\n",
      "the paddock cries, huhuhu, huhu, huhu, huhu, huhuhu, hu, huhuhu, huhu, huhu, huhu, huhu, huhuhu, and smays out, whichild the paddock comes out, whereupon the child secone little\n",
      "sister, have you not seen little red-stockings.  the paddock says,\n",
      "no, i have not.  have you.                                                                         iUNK\n",
      "the paddock cries, huhuhu, huhu, huhu, huhu, huhuhu, hu, huhuhu, huhu, huhu, huhu, huhu, huhuhu, and smays out, whichild the paddock comes out, whereupon the child secone little\n",
      "sister, have you not seen little red-stockings.  the paddock says,\n",
      "no, i have not.  have you.                                                                         iUNK\n",
      "the paddock cries, huhuhu, huhu, huhu, huhu, huhuhu, hu, huhuhu, huhu, huhu, huhu, huhu, huhuhu, and smays out, whichild the paddock comes out, whereupon the child secone little\n",
      "sister, have you not seen little red-stockings.  the paddock says,\n",
      "no, i have not.  have you.                                                                         iUNK\n",
      "the paddock cries, huhuhu, huhu, huhu, huhu, huhuhu, hu, huhuhu, huhu, \n",
      "\n",
      "\n",
      "\n",
      "Document 61 Step 8 processed (Perplexity: 16.47).\n",
      "Document 5 Step 8 processed (Perplexity: 12.74).\n",
      "Document 29 Step 8 processed (Perplexity: 16.55).\n",
      "Document 2 Step 8 processed (Perplexity: 17.91).\n",
      "Document 32 Step 8 processed (Perplexity: 14.99).\n",
      "Document 57 Step 8 processed (Perplexity: 13.89).\n",
      "Document 47 Step 8 processed (Perplexity: 6.71).\n",
      "Document 72 Step 8 processed (Perplexity: 17.49).\n",
      "Document 42 Step 8 processed (Perplexity: 21.08).\n",
      "Document 38 Step 8 processed (Perplexity: 12.94).\n",
      "Average loss at step 8: 2.675102\n",
      "\tPerplexity at step 8: 14.513833\n",
      "\n",
      "Valid Perplexity: 33.09\n",
      "\n",
      "Generated Text after epoch 7 ... \n",
      "======================== New text Segment ==========================\n",
      "\t ong by the\n",
      "queen, and the king's splendown, and the the kitched cooked their of the country, and the cook gainto the scread, and the said the king's splented to the flies, and the the kitched cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then the kitchen the cookedge of the country, and the whooke was and ing aw then th\n",
      "\n",
      "\n",
      "\n",
      "Document 89 Step 9 processed (Perplexity: 3.43).\n",
      "Document 2 Step 9 processed (Perplexity: 16.48).\n",
      "Document 92 Step 9 processed (Perplexity: 8.43).\n",
      "Document 98 Step 9 processed (Perplexity: 20.42).\n",
      "Document 75 Step 9 processed (Perplexity: 17.76).\n",
      "Document 86 Step 9 processed (Perplexity: 11.33).\n",
      "Document 44 Step 9 processed (Perplexity: 16.30).\n",
      "Document 77 Step 9 processed (Perplexity: 4.99).\n",
      "Document 62 Step 9 processed (Perplexity: 9.96).\n",
      "Document 40 Step 9 processed (Perplexity: 18.32).\n",
      "Average loss at step 9: 2.409340\n",
      "\tPerplexity at step 9: 11.126613\n",
      "\n",
      "Valid Perplexity: 34.31\n",
      "\n",
      "Generated Text after epoch 8 ... \n",
      "======================== New text Segment ==========================\n",
      "\t drew here of glass.  she she said, \"i diUNK  i diUNKnow now too.  but on the mare maidUNK  i will in a market-placelend wed, and i hat a man a market-placelebreached, and that here came and said, butiful my he will\n",
      "get on here maid not wis were of go beare of glass, and thather had i will so that was the mand\n",
      "to she waskets be and then the said,\n",
      "and will do not gress.  my he she was sawness would have to brokery.\n",
      "then the my her and they had to the king's pockets, and said, that will do not be your proself back.  when the sher had they said, be and that\n",
      "the said, butif you will mysee you do not gave too.  and i hall so that waske your your will\n",
      "do not been the king's daughter the scolend, and the said, and in the whole woman full sheress was of the market-place, and the whole wedding withisher had now the king's daughter was the king's daughter was\n",
      "too.  if i here do not were.  but not one\n",
      "maid not king toUNK  i have been the market-placelebreautifuld not on here of glass wer of the ing.\n",
      "the said, and she was of the maidUNK  i will in the your not back.  and i have not beliven a lived.  my her her mocked her to that her and waskery wish togethin her and sher\n",
      "she maid not begand then to the king's daughter was the king's daughter was\n",
      "too.  if i here down, and that will do not be screat wast.  and her her looking thisher happing to her and when they said, begand to she said, butiful make comforted, and when they said, butiful my cornere too.  i diUNK  i markiven you all\n",
      "dre your now too.  and i hall ben the musband sher and they said, butiful my cornere too.  i diUNK  i markiven you all\n",
      "dre your now too.  and i hall ben the musband sher and they said, butiful my cornere too.  i diUNK  i markiven you all\n",
      "dre your now too.  and i hall ben the musband sher and they said, butiful my cornere too.  i diUNK  i markiven you all\n",
      "dre your now too.  and i hall ben the musband sher and they said, butiful my cornere too.  i diUNK  i markiven you all\n",
      "dre your now too.  and i hall ben the musba\n",
      "\n",
      "\n",
      "\n",
      "Document 18 Step 10 processed (Perplexity: 11.91).\n",
      "Document 62 Step 10 processed (Perplexity: 3.68).\n",
      "Document 4 Step 10 processed (Perplexity: 25.10).\n",
      "Document 21 Step 10 processed (Perplexity: 15.87).\n",
      "Document 60 Step 10 processed (Perplexity: 20.59).\n",
      "Document 7 Step 10 processed (Perplexity: 15.51).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Document 61 Step 10 processed (Perplexity: 13.38).\n",
      "Document 68 Step 10 processed (Perplexity: 16.38).\n",
      "Document 44 Step 10 processed (Perplexity: 10.35).\n",
      "Document 69 Step 10 processed (Perplexity: 15.46).\n",
      "Average loss at step 10: 2.599917\n",
      "\tPerplexity at step 10: 13.462614\n",
      "\n",
      "Valid Perplexity: 30.46\n",
      "\n",
      "Generated Text after epoch 9 ... \n",
      "======================== New text Segment ==========================\n",
      "\t  know so they saw a glastle maide, and wholeept the man he came to the could not rinto them.  they said, nowere to the came to the king's\n",
      "daughter.  then hen he came to the could not rinto them.  they said, nowere to the came to the king's\n",
      "daughter.  then hen he came to ther, they saw they said, nowere to the came to the gobless, but when saw they he could not ring to they they were to then himself they said, and the came to the good to they that the gobless, but when strout it was see he had not hey maiden he took him, but the he said, it the haver you\n",
      "serve, and the mand said they they will give to the give me give manything him, and found the they said, nown you have to you see you serve, and the mantle man they said, nowere to the came to the gobless, but when saw they he could not ring to they they were to then himself they said, and the came to the good to they that the gobless, but when strout it was see he had not hey maiden he took him, but the he said, it the haver you\n",
      "serve, and the mand said they they will give to the give me give manything him, and found the they said, nown you have to you see you serve, and the mantle man they said, nowere to the came to the gobless, but when saw they he could not ring to they they were to then himself they said, and the came to the good to they that the gobless, but when strout it was see he had not hey maiden he took him, but the he said, it the haver you\n",
      "serve, and the mand said they they will give to the give me give manything him, and found the they said, nown you have to you see you serve, and the mantle man they said, nowere to the came to the gobless, but when saw they he could not ring to they they were to then himself they said, and the came to the good to they that the gobless, but when strout it was see he had not hey maiden he took him, but the he said, it the haver you\n",
      "serve, and the mand said they they will give to the give me give manything him, and found the they said, nown you have to you see you serve,\n",
      "\n",
      "\n",
      "\n",
      "Document 51 Step 11 processed (Perplexity: 6.36).\n",
      "Document 15 Step 11 processed (Perplexity: 19.98).\n",
      "Document 19 Step 11 processed (Perplexity: 12.50).\n",
      "Document 8 Step 11 processed (Perplexity: 14.45).\n",
      "Document 2 Step 11 processed (Perplexity: 14.83).\n",
      "Document 67 Step 11 processed (Perplexity: 10.72).\n",
      "Document 52 Step 11 processed (Perplexity: 8.20).\n",
      "Document 48 Step 11 processed (Perplexity: 12.41).\n",
      "Document 80 Step 11 processed (Perplexity: 13.60).\n",
      "Document 71 Step 11 processed (Perplexity: 11.16).\n",
      "Average loss at step 11: 2.475359\n",
      "\tPerplexity at step 11: 11.885977\n",
      "\n",
      "Valid Perplexity: 33.45\n",
      "\n",
      "Generated Text after epoch 10 ... \n",
      "======================== New text Segment ==========================\n",
      "\t ought his of them told, and the was were\n",
      "burnt, and the the daughtermaiden the womand the bird, and the prisone prisonce went withe children the fount them to the wast to seep\n",
      "                                          the the twain the twain the birds were\n",
      "burnt they the fisherman, and went took hishe fountaid, and the king was son.                                      the the twain the king there\n",
      "burntain the the daughterman, went he was to the childrent took him, and the came of the fishe\n",
      "fisherman, and went hered the water took him, and the was went to the daughterman, and went hered the took him the old womand the daughter she was so the childrent to deak, and whe fould him the wast to seep\n",
      "                                            the the twain the twain the birds were\n",
      "burnt they the fisherman, and went took hishe fountaid, and the king was son.                                      the the twain the king there\n",
      "burntain the the daughterman, went he was to the childrent took him, and the came of the fishe\n",
      "fisherman, and went hered the water took him, and the was went to the daughterman, and went hered the took him the old womand the daughter she was so the childrent to deak, and whe fould him the wast to seep\n",
      "                                            the the twain the twain the birds were\n",
      "burnt they the fisherman, and went took hishe fountaid, and the king was son.                                      the the twain the king there\n",
      "burntain the the daughterman, went he was to the childrent took him, and the came of the fishe\n",
      "fisherman, and went hered the water took him, and the was went to the daughterman, and went hered the took him the old womand the daughter she was so the childrent to deak, and whe fould him the wast to seep\n",
      "                                            the the twain the twain the birds were\n",
      "burnt they the fisherman, and went took hishe fountaid, and the king was son.                                      the the twain the king there\n",
      "burntain th\n",
      "\n",
      "\n",
      "\n",
      "Document 8 Step 12 processed (Perplexity: 8.93).\n",
      "Document 4 Step 12 processed (Perplexity: 16.21).\n",
      "Document 82 Step 12 processed (Perplexity: 15.15).\n",
      "Document 49 Step 12 processed (Perplexity: 11.80).\n",
      "Document 33 Step 12 processed (Perplexity: 13.53).\n",
      "Document 21 Step 12 processed (Perplexity: 12.79).\n",
      "Document 41 Step 12 processed (Perplexity: 18.06).\n",
      "Document 85 Step 12 processed (Perplexity: 12.76).\n",
      "Document 30 Step 12 processed (Perplexity: 6.63).\n",
      "Document 97 Step 12 processed (Perplexity: 15.69).\n",
      "Average loss at step 12: 2.539760\n",
      "\tPerplexity at step 12: 12.676628\n",
      "\n",
      "Valid Perplexity: 31.50\n",
      "\n",
      "Generated Text after epoch 11 ... \n",
      "======================== New text Segment ==========================\n",
      "\t maidently from them, and them to the kingdom, and the the proncess, and they with the king's daughter said, \"you have the the proncess, and the proncess, and ased the should have had not his vere.  one wento the to ther seeir father as so\n",
      "she should have had not her artunting artuntil the king's daughter said, \"you have the the proncess, and the proncess, and ased the should have had not his vere.  one wento the to ther seeir father as so\n",
      "she should have had not her artunting artuntil the king's daughter said, \"you have the the proncess, and the proncess, and ased the should have had not his vere.  one wento the to ther seeir father as so\n",
      "she should have had not her artunting artuntil the king's daughter said, \"you have the the proncess, and the proncess, and ased the should have had not his vere.  one wento the to ther seeir father as so\n",
      "she should have had not her artunting artuntil the king's daughter said, \"you have the the proncess, and the proncess, and ased the should have had not his vere.  one wento the to ther seeir father as so\n",
      "she should have had not her artunting artuntil the king's daughter said, \"you have the the proncess, and the proncess, and ased the should have had not his vere.  one wento the to ther seeir father as so\n",
      "she should have had not her artunting artuntil the king's daughter said, \"you have the the proncess, and the proncess, and ased the should have had not his vere.  one wento the to ther seeir father as so\n",
      "she should have had not her artunting artuntil the king's daughter said, \"you have the the proncess, and the proncess, and ased the should have had not his vere.  one wento the to ther seeir father as so\n",
      "she should have had not her artunting artuntil the king's daughter said, \"you have the the proncess, and the proncess, and ased the should have had not his vere.  one wento the to ther seeir father as so\n",
      "she should have had not her artunting artuntil the king's daughter said, \"you have the the proncess, and the proncess, and ased the\n",
      "\n",
      "\n",
      "\n",
      "Document 61 Step 13 processed (Perplexity: 13.23).\n",
      "Document 89 Step 13 processed (Perplexity: 2.76).\n",
      "Document 93 Step 13 processed (Perplexity: 11.75).\n",
      "Document 75 Step 13 processed (Perplexity: 16.20).\n",
      "Document 23 Step 13 processed (Perplexity: 9.18).\n",
      "Document 5 Step 13 processed (Perplexity: 14.02).\n",
      "Document 71 Step 13 processed (Perplexity: 9.23).\n",
      "Document 21 Step 13 processed (Perplexity: 11.06).\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Document 49 Step 13 processed (Perplexity: 9.30).\n",
      "Document 82 Step 13 processed (Perplexity: 11.76).\n",
      "Average loss at step 13: 2.302307\n",
      "\tPerplexity at step 13: 9.997217\n",
      "\n",
      "Valid Perplexity: 30.75\n",
      "\n",
      "Generated Text after epoch 12 ... \n",
      "======================== New text Segment ==========================\n",
      "\t hedgehog, and the kingdom the king's\n",
      "daughter saw that he had had been hand to himself known, and the hans the was shog told her, and the had father the was shog livery to him to give for him to\n",
      "himself kingdom, and the he was came to the were told for her.  then the kingdom the kingdom the king's\n",
      "daughter was to when told hand the have himself known, and the hans the was could shog told her he have himself known, and the had father the were kingdom the king's\n",
      "daughter was to when told hand the have himself known, and the hans the was could shog told her he have himself known, and the had father the were kingdom the king's\n",
      "daughter was to when told hand the have himself known, and the hans the was could shog told her he have himself known, and the had father the were kingdom the king's\n",
      "daughter was to when told hand the have himself known, and the hans the was could shog told her he have himself known, and the had father the were kingdom the king's\n",
      "daughter was to when told hand the have himself known, and the hans the was could shog told her he have himself known, and the had father the were kingdom the king's\n",
      "daughter was to when told hand the have himself known, and the hans the was could shog told her he have himself known, and the had father the were kingdom the king's\n",
      "daughter was to when told hand the have himself known, and the hans the was could shog told her he have himself known, and the had father the were kingdom the king's\n",
      "daughter was to when told hand the have himself known, and the hans the was could shog told her he have himself known, and the had father the were kingdom the king's\n",
      "daughter was to when told hand the have himself known, and the hans the was could shog told her he have himself known, and the had father the were kingdom the king's\n",
      "daughter was to when told hand the have himself known, and the hans the was could shog told her he have himself known, and the had father the were kingdom the king's\n",
      "daughter was to when told hand the have him\n",
      "\n",
      "\n",
      "\n",
      "Document 22 Step 14 processed (Perplexity: 16.43).\n",
      "Document 61 Step 14 processed (Perplexity: 10.28).\n",
      "Document 27 Step 14 processed (Perplexity: 16.21).\n",
      "Document 71 Step 14 processed (Perplexity: 6.67).\n",
      "Document 75 Step 14 processed (Perplexity: 11.20).\n",
      "Document 13 Step 14 processed (Perplexity: 17.17).\n",
      "Document 89 Step 14 processed (Perplexity: 2.16).\n",
      "Document 19 Step 14 processed (Perplexity: 11.48).\n",
      "Document 64 Step 14 processed (Perplexity: 18.82).\n",
      "Document 16 Step 14 processed (Perplexity: 12.62).\n",
      "Average loss at step 14: 2.375069\n",
      "\tPerplexity at step 14: 10.751751\n",
      "\n",
      "Valid Perplexity: 34.86\n",
      "\n",
      "Generated Text after epoch 13 ... \n",
      "======================== New text Segment ==========================\n",
      "\t e manto there for your\n",
      "wedding-mantle.  but the mantlew when they saw twelve then she mantlew the mantleavened them the for the stlew twell of then underee mantle bed to\n",
      "her grey mantle.  what she she succed at the sent that it she was\n",
      "will bed the riddle wind you a raven and deal\n",
      "the the the mantlew which she was brought withought with gold of it.\n",
      "when she mantlet the mantle before the the brought withe will before, and she riddle the wind ravent the the will before the the mantle but of the will butiful daughter\n",
      "and not her mantlew that it.\n",
      "went her mantlew the wait with it.  but the judges said, that sleasked it.  be\n",
      "twelves the mantle but then she mantlet the mantle before the the brought withe will before, and she riddle the wind ravent the the will before the the mantle but of the will butiful daughter\n",
      "and not her mantlew that it.\n",
      "went her mantlew the wait with it.  but the judges said, that sleasked it.  be\n",
      "twelves the mantle but then she mantlet the mantle before the the brought withe will before, and she riddle the wind ravent the the will before the the mantle but of the will butiful daughter\n",
      "and not her mantlew that it.\n",
      "went her mantlew the wait with it.  but the judges said, that sleasked it.  be\n",
      "twelves the mantle but then she mantlet the mantle before the the brought withe will before, and she riddle the wind ravent the the will before the the mantle but of the will butiful daughter\n",
      "and not her mantlew that it.\n",
      "went her mantlew the wait with it.  but the judges said, that sleasked it.  be\n",
      "twelves the mantle but then she mantlet the mantle before the the brought withe will before, and she riddle the wind ravent the the will before the the mantle but of the will butiful daughter\n",
      "and not her mantlew that it.\n",
      "went her mantlew the wait with it.  but the judges said, that sleasked it.  be\n",
      "twelves the mantle but then she mantlet the mantle before the the brought withe will before, and she riddle the wind ravent the the will before the the mantle but of the will\n",
      "\n",
      "\n",
      "\n",
      "Document 39 Step 15 processed (Perplexity: 10.02).\n",
      "Document 7 Step 15 processed (Perplexity: 13.84).\n",
      "Document 0 Step 15 processed (Perplexity: 12.27).\n",
      "Document 9 Step 15 processed (Perplexity: 17.02).\n",
      "Document 6 Step 15 processed (Perplexity: 13.55).\n",
      "Document 12 Step 15 processed (Perplexity: 12.35).\n",
      "Document 83 Step 15 processed (Perplexity: 3.89).\n",
      "Document 1 Step 15 processed (Perplexity: 16.41).\n",
      "Document 52 Step 15 processed (Perplexity: 7.40).\n",
      "Document 93 Step 15 processed (Perplexity: 7.55).\n",
      "Average loss at step 15: 2.357049\n",
      "\tPerplexity at step 15: 10.559748\n",
      "\n",
      "Valid Perplexity: 39.21\n",
      "\n",
      "Generated Text after epoch 14 ... \n",
      "======================== New text Segment ==========================\n",
      "\t sked of them fell sitting ing in and his said, \"you\n",
      "plied.  at yourishe had because\n",
      "they a grew old, and the two other so much, they had learned a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they lived together they had been so clever, and had loved one another very much, they had lived a great deal of money.  the thus\n",
      "they\n",
      "\n",
      "\n",
      "\n",
      "Document 79 Step 16 processed (Perplexity: 7.97).\n",
      "Document 15 Step 16 processed (Perplexity: 16.94).\n",
      "Document 4 Step 16 processed (Perplexity: 14.90).\n",
      "Document 14 Step 16 processed (Perplexity: 19.77).\n",
      "Document 61 Step 16 processed (Perplexity: 10.85).\n",
      "Document 10 Step 16 processed (Perplexity: 8.56).\n",
      "Document 44 Step 16 processed (Perplexity: 12.15).\n",
      "Document 84 Step 16 processed (Perplexity: 15.54).\n",
      "Document 40 Step 16 processed (Perplexity: 14.11).\n",
      "Document 9 Step 16 processed (Perplexity: 12.30).\n",
      "Average loss at step 16: 2.551893\n",
      "\tPerplexity at step 16: 12.831368\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Valid Perplexity: 30.65\n",
      "\n",
      "Generated Text after epoch 15 ... \n",
      "======================== New text Segment ==========================\n",
      "\t e scullion to beautiful of the girl, and she she saw that she was a duck, and said,\n",
      "what does my deserver, in a persone and the scullittlend to beautiful of the great the girl, and to the king, the scullion the sword and said, it the scullion the swould nothir giving befor and the scullion to beautiful of the girl, and the she swould the scullion to beautiful of the great she good, and she swould that gold woman the sculd beautiful of the gold that streaut of ble and the scullion to beautiful of the great the girl, and she swould the scullion to beautiful of the great she good, and she swould that gold woman the sculd beautiful of the gold that streaut of ble and the scullion to beautiful of the great the girl, and she swould the scullion to beautiful of the great she good, and she swould that gold woman the sculd beautiful of the gold that streaut of ble and the scullion to beautiful of the great the girl, and she swould the scullion to beautiful of the great she good, and she swould that gold woman the sculd beautiful of the gold that streaut of ble and the scullion to beautiful of the great the girl, and she swould the scullion to beautiful of the great she good, and she swould that gold woman the sculd beautiful of the gold that streaut of ble and the scullion to beautiful of the great the girl, and she swould the scullion to beautiful of the great she good, and she swould that gold woman the sculd beautiful of the gold that streaut of ble and the scullion to beautiful of the great the girl, and she swould the scullion to beautiful of the great she good, and she swould that gold woman the sculd beautiful of the gold that streaut of ble and the scullion to beautiful of the great the girl, and she swould the scullion to beautiful of the great she good, and she swould that gold woman the sculd beautiful of the gold that streaut of ble and the scullion to beautiful of the great the girl, and she swould the scullion to beautiful of the great she good, and she swould th\n",
      "\n",
      "\n",
      "\n",
      "Document 84 Step 17 processed (Perplexity: 9.11).\n",
      "Document 76 Step 17 processed (Perplexity: 11.60).\n",
      "Document 2 Step 17 processed (Perplexity: 16.56).\n",
      "Document 94 Step 17 processed (Perplexity: 12.20).\n",
      "Document 68 Step 17 processed (Perplexity: 16.06).\n",
      "Document 89 Step 17 processed (Perplexity: 2.24).\n",
      "Document 99 Step 17 processed (Perplexity: 9.19).\n",
      "Document 82 Step 17 processed (Perplexity: 14.31).\n",
      "Document 10 Step 17 processed (Perplexity: 6.28).\n",
      "Document 42 Step 17 processed (Perplexity: 19.88).\n",
      "Average loss at step 17: 2.325813\n",
      "\tPerplexity at step 17: 10.235003\n",
      "\n",
      "Valid Perplexity: 33.61\n",
      "\n",
      "Generated Text after epoch 16 ... \n",
      "======================== New text Segment ==========================\n",
      "\t , but i am not\n",
      "put in my great it to not\n",
      "put in my guestere knapsack if the knapsack, i knapsack is my great, and the king's daughter was that not\n",
      "put herself king as and to the king's\n",
      "daughter was the to himself king better, and the king's\n",
      "daughter was the to himself king the propered him, and haverythe captaid to him, and the king and said to him, and that his do the would haverythe had have been a ving andinstone ther morcelentill his have broad the weneaut, and to the\n",
      "cone that the was away table-chamber, and then\n",
      "to thread, and the the\n",
      "conger, and the entrythe king's said, how down\n",
      "the would have been instill not one knapsack, and had hat on\n",
      "his the was stablighted to the king's said, he had hat on\n",
      "his she was and threed, and she rod they untill the was stablighted his so his from\n",
      "her, and hat he was seep, and the was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, his do you coalace.  then she was said, h\n",
      "\n",
      "\n",
      "\n",
      "Document 44 Step 18 processed (Perplexity: 9.29).\n",
      "Document 38 Step 18 processed (Perplexity: 10.88).\n",
      "Document 8 Step 18 processed (Perplexity: 11.15).\n",
      "Document 11 Step 18 processed (Perplexity: 20.27).\n",
      "Document 83 Step 18 processed (Perplexity: 3.12).\n",
      "Document 64 Step 18 processed (Perplexity: 16.81).\n",
      "Document 86 Step 18 processed (Perplexity: 10.78).\n",
      "Document 62 Step 18 processed (Perplexity: 6.41).\n",
      "Document 32 Step 18 processed (Perplexity: 14.48).\n",
      "Document 89 Step 18 processed (Perplexity: 2.06).\n",
      "Average loss at step 18: 2.162594\n",
      "\tPerplexity at step 18: 8.693657\n",
      "\n",
      "Valid Perplexity: 53.03\n",
      "\n",
      "Generated Text after epoch 17 ... \n",
      "======================== New text Segment ==========================\n",
      "\t h earth, and it the child had rest beneath the\n",
      "ground.  the the mother herself was obliged to go to\n",
      "the grave, and strike the arm with a rod, and when she had done that,\n",
      "it was drawn in, and then at last the child had rest beneath the\n",
      "ground.  the the child had had rest beneath the\n",
      "ground.  hen they had put it in\n",
      "and spread fresh earth over it, it was all to no purpose, for the arm\n",
      "always came out again.  then the mother herself was obliged to go to\n",
      "the grave, and strike the arm with a rod, and when she had done that,\n",
      "it was drawn in, and then at last the child had rest beneath the\n",
      "ground.  the the child had had rest beneath the\n",
      "ground.  hen they had put it in\n",
      "and spread fresh earth over it, it was all to no purpose, for the arm\n",
      "always came out again.  then the mother herself was obliged to go to\n",
      "the grave, and strike the arm with a rod, and when she had done that,\n",
      "it was drawn in, and then at last the child had rest beneath the\n",
      "ground.  the the child had had rest beneath the\n",
      "ground.  hen they had put it in\n",
      "and spread fresh earth over it, it was all to no purpose, for the arm\n",
      "always came out again.  then the mother herself was obliged to go to\n",
      "the grave, and strike the arm with a rod, and when she had done that,\n",
      "it was drawn in, and then at last the child had rest beneath the\n",
      "ground.  the the child had had rest beneath the\n",
      "ground.  hen they had put it in\n",
      "and spread fresh earth over it, it was all to no purpose, for the arm\n",
      "always came out again.  then the mother herself was obliged to go to\n",
      "the grave, and strike the arm with a rod, and when she had done that,\n",
      "it was drawn in, and then at last the child had rest beneath the\n",
      "ground.  the the child had had rest beneath the\n",
      "ground.  hen they had put it in\n",
      "and spread fresh earth over it, it was all to no purpose, for the arm\n",
      "always came out again.  then the mother herself was obliged to go to\n",
      "the grave, and strike the arm with a rod, and when she had done that,\n",
      "it was drawn in, and then at last the child had rest beneath t\n",
      "\n",
      "\n",
      "\n",
      "Document 41 Step 19 processed (Perplexity: 18.91).\n",
      "Document 3 Step 19 processed (Perplexity: 12.97).\n",
      "Document 53 Step 19 processed (Perplexity: 9.46).\n",
      "Document 52 Step 19 processed (Perplexity: 7.88).\n",
      "Document 73 Step 19 processed (Perplexity: 17.78).\n",
      "Document 25 Step 19 processed (Perplexity: 12.45).\n",
      "Document 82 Step 19 processed (Perplexity: 10.46).\n",
      "Document 94 Step 19 processed (Perplexity: 9.53).\n",
      "Document 76 Step 19 processed (Perplexity: 9.02).\n",
      "Document 36 Step 19 processed (Perplexity: 12.19).\n",
      "Average loss at step 19: 2.451512\n",
      "\tPerplexity at step 19: 11.605883\n",
      "\n",
      "Valid Perplexity: 42.10\n",
      "\n",
      "Generated Text after epoch 18 ... \n",
      "======================== New text Segment ==========================\n",
      "\t ard.  i willy a feard.  who you shall noise beforefully about the wild boar, the with his will however, and not the caree wolf\n",
      "so time, who the wolf's he midgehog and said the down it and at the dog andere and not the tree\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "looked up andere friend when aw the wolf, was ashamed of having a made friend mady the friends bit the boarful no one the dog andere and not the boar, and not the wolf\n",
      "so time to the tree.  they weree withought the wild boar, the with his will however, and not the caree wolf\n",
      "so time, who the wolf's he midgehog and said the down it and at the dog andere and not the tree\n",
      "looked up andere friend when aw the wolf, was ashamed of having a made friend mady the friends bit the boarful no one the dog andere and not the boar, and not the wolf\n",
      "so time to the tree.  they weree withought the wild boar, the with his will however, and not the caree wolf\n",
      "so time, who the wolf's he midgehog and said the down it and at the dog andere and not the tree\n",
      "looked up andere friend when aw the wolf, was ashamed of having a made friend mady the friends bit the boarful no one the dog andere and not the boar, and not the wolf\n",
      "so time to the tree.  they weree withought the wild boar, the with his will however, and not the caree wolf\n",
      "so time, who the wolf's he midgehog and said the down it and at the dog andere and not the tree\n",
      "looked up andere friend when aw the wolf, was ashamed of having a made friend mady the friends bit the boarful no one the dog andere and not the boar, and not the wolf\n",
      "so time to the tree.  they weree withought the wild boar, the with his will however, and not the caree wolf\n",
      "so time, who the wolf's he midgehog and said the down it and at the dog andere and not the tree\n",
      "looked up andere friend when aw the wolf, was ashamed of having a made friend mady the friends bit the boarful no one the dog andere and not the boar, and not the wolf\n",
      "so time to the tree.  they weree withought the wild boar, the with his will however, and not the caree wolf\n",
      "so time, who th\n",
      "\n",
      "\n",
      "\n",
      "Document 48 Step 20 processed (Perplexity: 11.88).\n",
      "Document 63 Step 20 processed (Perplexity: 16.80).\n",
      "Document 61 Step 20 processed (Perplexity: 12.35).\n",
      "Document 91 Step 20 processed (Perplexity: 18.30).\n",
      "Document 81 Step 20 processed (Perplexity: 22.95).\n",
      "Document 57 Step 20 processed (Perplexity: 13.17).\n",
      "Document 22 Step 20 processed (Perplexity: 14.03).\n",
      "Document 66 Step 20 processed (Perplexity: 18.21).\n",
      "Document 7 Step 20 processed (Perplexity: 12.06).\n",
      "Document 76 Step 20 processed (Perplexity: 6.23).\n",
      "Average loss at step 20: 2.629093\n",
      "\tPerplexity at step 20: 13.861186\n",
      "\n",
      "Valid Perplexity: 33.73\n",
      "\n",
      "Generated Text after epoch 19 ... \n",
      "======================== New text Segment ==========================\n",
      "\t he\n",
      "body shall befor to the bear crept the and said, UNKhild, and said, \"i will not do you make hallow-wren, and beg to flee, and say children, eat the young wrens were\n",
      "satisfied, and sat down together and ate and drank, and beat the and drent the flewar's hold cried, \"growler, you are will before to the willow-wren\n",
      "flew to the children? you are\n",
      "you ar.\"  and now ate young wrens were\n",
      "satisfied, and sat down together and ate and drank, and beat the and drent the flewar's hold cried, \"growler, you are will before to the willow-wren\n",
      "flew to the children? you are\n",
      "you ar.\"  and now ate young wrens were\n",
      "satisfied, and sat down together and ate and drank, and beat the and drent the flewar's hold cried, \"growler, you are will before to the willow-wren\n",
      "flew to the children? you are\n",
      "you ar.\"  and now ate young wrens were\n",
      "satisfied, and sat down together and ate and drank, and beat the and drent the flewar's hold cried, \"growler, you are will before to the willow-wren\n",
      "flew to the children? you are\n",
      "you ar.\"  and now ate young wrens were\n",
      "satisfied, and sat down together and ate and drank, and beat the and drent the flewar's hold cried, \"growler, you are will before to the willow-wren\n",
      "flew to the children? you are\n",
      "you ar.\"  and now ate young wrens were\n",
      "satisfied, and sat down together and ate and drank, and beat the and drent the flewar's hold cried, \"growler, you are will before to the willow-wren\n",
      "flew to the children? you are\n",
      "you ar.\"  and now ate young wrens were\n",
      "satisfied, and sat down together and ate and drank, and beat the and drent the flewar's hold cried, \"growler, you are will before to the willow-wren\n",
      "flew to the children? you are\n",
      "you ar.\"  and now ate young wrens were\n",
      "satisfied, and sat down together and ate and drank, and beat the and drent the flewar's hold cried, \"growler, you are will before to the willow-wren\n",
      "flew to the children? you are\n",
      "you ar.\"  and now ate young wrens were\n",
      "satisfied, and sat down together and ate and drank, and beat the and drent the flewar's hol\n",
      "\n",
      "\n",
      "\n",
      "Document 53 Step 21 processed (Perplexity: 6.11).\n",
      "Document 49 Step 21 processed (Perplexity: 11.73).\n",
      "Document 51 Step 21 processed (Perplexity: 5.05).\n",
      "Document 92 Step 21 processed (Perplexity: 10.58).\n",
      "Document 78 Step 21 processed (Perplexity: 16.23).\n",
      "Document 52 Step 21 processed (Perplexity: 6.36).\n",
      "Document 30 Step 21 processed (Perplexity: 6.96).\n",
      "Document 20 Step 21 processed (Perplexity: 12.04).\n",
      "Document 35 Step 21 processed (Perplexity: 21.46).\n",
      "Document 13 Step 21 processed (Perplexity: 15.06).\n",
      "Average loss at step 21: 2.309500\n",
      "\tPerplexity at step 21: 10.069385\n",
      "\n",
      "Valid Perplexity: 33.09\n",
      "\n",
      "Generated Text after epoch 20 ... \n",
      "======================== New text Segment ==========================\n",
      "\t father, wher she saw\n",
      "yould have had nothe gone of the king's had gone the down in the grand whate hat and as his had\n",
      "no beautiful of the great had gone for heard.\n",
      "at the the king's had gone the of the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid the standing the brought\n",
      "flightered themselved to themself, and the standing up the standing the brought\n",
      "flightered themselved to the beather, and he standing upid t\n",
      "\n",
      "\n",
      "\n",
      "Document 84 Step 22 processed (Perplexity: 11.87).\n",
      "Document 38 Step 22 processed (Perplexity: 9.20).\n",
      "Document 77 Step 22 processed (Perplexity: 4.29).\n",
      "Document 42 Step 22 processed (Perplexity: 18.99).\n",
      "Document 98 Step 22 processed (Perplexity: 17.19).\n",
      "Document 76 Step 22 processed (Perplexity: 5.79).\n",
      "Document 30 Step 22 processed (Perplexity: 4.39).\n",
      "Document 92 Step 22 processed (Perplexity: 6.89).\n",
      "Document 68 Step 22 processed (Perplexity: 15.99).\n",
      "Document 70 Step 22 processed (Perplexity: 12.67).\n",
      "Average loss at step 22: 2.241421\n",
      "\tPerplexity at step 22: 9.406692\n",
      "\n",
      "Valid Perplexity: 33.95\n",
      "\n",
      "Generated Text after epoch 21 ... \n",
      "======================== New text Segment ==========================\n",
      "\t ome?  oh, my dear\n",
      "you mustere i will no my dear\n",
      "long, my dear i wifess.\" then the king the dook a little.  shen she said, and that was the king's married beds oneater, and the king the deasaid, my dear\n",
      "lord and him in the and said, i am yours, and that the king hought ther the\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "peasand begged their presented to him to him, and said, my dear\n",
      "lord and he was that, and her eyes and said to her, and if it was not that, and her ey wasand begged the persent the presented ther the sant to before the king's daughterful precious and hervants, and when she tooked him and said, and the king's daughterful precious and his wife precious and said med to his forced to him it that, and her eyes, and said, i am yours, and if you said me - to my dear\n",
      "long and dranking.  the king the said to him it that, and the king the dook a little.  shen she said, and that was she she was said, you wif you will gle\n",
      "mine, i have yourselve yours, and me - to my dear\n",
      "long and draught to the king, and said, my dear\n",
      "lord and he was that wasand begged the king he present ther the king, and said, my dear\n",
      "lord and him in the precious shad me - he had have brought baced here and her back with him took the presents, and when she took the presented and the king's daughterful precious and hervants, and he called himself brought the presented to the peasand said, my dear\n",
      "lord and him in the precious shad me - he had have brought baced here and her back with him took the presents, and when she took the presented and the king's daughterful precious and hervants, and he called himself brought the presented to the peasand said, my dear\n",
      "lord and him in the precious shad me - he had have brought baced here and her back with him took the presents, and when she took the presented and the king's daughterful precious and hervants, and he called himself brought the presented to the peasand said, my dear\n",
      "lord and him in the precious shad me - he had have brought baced here and her back with him took the presents, and when sh\n",
      "\n",
      "\n",
      "\n",
      "Document 24 Step 23 processed (Perplexity: 12.93).\n",
      "Document 56 Step 23 processed (Perplexity: 6.88).\n",
      "Document 21 Step 23 processed (Perplexity: 16.50).\n",
      "Document 41 Step 23 processed (Perplexity: 15.08).\n",
      "Document 32 Step 23 processed (Perplexity: 10.88).\n",
      "Document 12 Step 23 processed (Perplexity: 12.41).\n",
      "Document 13 Step 23 processed (Perplexity: 11.22).\n",
      "Document 92 Step 23 processed (Perplexity: 5.24).\n",
      "Document 28 Step 23 processed (Perplexity: 7.74).\n",
      "Document 54 Step 23 processed (Perplexity: 15.72).\n",
      "Average loss at step 23: 2.378540\n",
      "\tPerplexity at step 23: 10.789135\n",
      "\n",
      "Valid Perplexity: 39.35\n",
      "\n",
      "Generated Text after epoch 22 ... \n",
      "======================== New text Segment ==========================\n",
      "\t  asked,\n",
      "\"yould not live hat the councillors, she was shered ing away was shey of\n",
      "the ground.  when there the people camew. mose palacerted to the king, which was she was to the cat was shereaced the plagued, which was shother had to the cat was shereache was safely of\n",
      "the ground.  when there the people camew. mose palacerted to the king, which was she was to the cat was shereaced the plagued, which was shother had to the cat was shereache was safely of\n",
      "the ground.  when there the people camew. mose palacerted to the king, which was she was to the cat was shereaced the plagued, which was shother had to the cat was shereache was safely of\n",
      "the ground.  when there the people camew. mose palacerted to the king, which was she was to the cat was shereaced the plagued, which was shother had to the cat was shereache was safely of\n",
      "the ground.  when there the people camew. mose palacerted to the king, which was she was to the cat was shereaced the plagued, which was shother had to the cat was shereache was safely of\n",
      "the ground.  when there the people camew. mose palacerted to the king, which was she was to the cat was shereaced the plagued, which was shother had to the cat was shereache was safely of\n",
      "the ground.  when there the people camew. mose palacerted to the king, which was she was to the cat was shereaced the plagued, which was shother had to the cat was shereache was safely of\n",
      "the ground.  when there the people camew. mose palacerted to the king, which was she was to the cat was shereaced the plagued, which was shother had to the cat was shereache was safely of\n",
      "the ground.  when there the people camew. mose palacerted to the king, which was she was to the cat was shereaced the plagued, which was shother had to the cat was shereache was safely of\n",
      "the ground.  when there the people camew. mose palacerted to the king, which was she was to the cat was shereaced the plagued, which was shother had to the cat was shereache was safely of\n",
      "the ground.  when there the people camew.\n",
      "\n",
      "\n",
      "\n",
      "Document 45 Step 24 processed (Perplexity: 18.01).\n",
      "Document 35 Step 24 processed (Perplexity: 14.37).\n",
      "Document 24 Step 24 processed (Perplexity: 7.74).\n",
      "Document 95 Step 24 processed (Perplexity: 14.49).\n",
      "Document 42 Step 24 processed (Perplexity: 14.25).\n",
      "Document 98 Step 24 processed (Perplexity: 12.87).\n",
      "Document 9 Step 24 processed (Perplexity: 13.16).\n",
      "Document 0 Step 24 processed (Perplexity: 10.93).\n",
      "Document 8 Step 24 processed (Perplexity: 10.58).\n",
      "Document 91 Step 24 processed (Perplexity: 16.22).\n",
      "Average loss at step 24: 2.560279\n",
      "\tPerplexity at step 24: 12.939425\n",
      "\n",
      "Valid Perplexity: 29.78\n",
      "\n",
      "Generated Text after epoch 23 ... \n",
      "======================== New text Segment ==========================\n",
      "\t ervanted, for the was so the much the old girl, and drove meall the for for the was days,\n",
      "and given the same, for the others, and said them as if the said, \"i will takeep it the will to the old woman her huntsmand the huntsmange the wasted the king's-heart.  if he could nothers, and said have the others, but the said to the others, \"i will takeep it the will to the old woman her huntsmand the huntsmange the wasted the king's-heart.  if he could nothers, and said have the others, but the said to the others, \"i will takeep it the will to the old woman her huntsmand the huntsmange the wasted the king's-heart.  if he could nothers, and said have the others, but the said to the others, \"i will takeep it the will to the old woman her huntsmand the huntsmange the wasted the king's-heart.  if he could nothers, and said have the others, but the said to the others, \"i will takeep it the will to the old woman her huntsmand the huntsmange the wasted the king's-heart.  if he could nothers, and said have the others, but the said to the others, \"i will takeep it the will to the old woman her huntsmand the huntsmange the wasted the king's-heart.  if he could nothers, and said have the others, but the said to the others, \"i will takeep it the will to the old woman her huntsmand the huntsmange the wasted the king's-heart.  if he could nothers, and said have the others, but the said to the others, \"i will takeep it the will to the old woman her huntsmand the huntsmange the wasted the king's-heart.  if he could nothers, and said have the others, but the said to the others, \"i will takeep it the will to the old woman her huntsmand the huntsmange the wasted the king's-heart.  if he could nothers, and said have the others, but the said to the others, \"i will takeep it the will to the old woman her huntsmand the huntsmange the wasted the king's-heart.  if he could nothers, and said have the others, but the said to the others, \"i will takeep it the will to the old woman her huntsmand the hunt\n",
      "\n",
      "\n",
      "\n",
      "Document 86 Step 25 processed (Perplexity: 9.64).\n",
      "Document 36 Step 25 processed (Perplexity: 9.40).\n",
      "Document 79 Step 25 processed (Perplexity: 7.00).\n",
      "Document 17 Step 25 processed (Perplexity: 14.05).\n",
      "Document 81 Step 25 processed (Perplexity: 24.31).\n",
      "Document 15 Step 25 processed (Perplexity: 14.51).\n",
      "Document 52 Step 25 processed (Perplexity: 6.59).\n",
      "Document 92 Step 25 processed (Perplexity: 5.60).\n",
      "Document 10 Step 25 processed (Perplexity: 7.40).\n",
      "Document 63 Step 25 processed (Perplexity: 14.14).\n",
      "Average loss at step 25: 2.322014\n",
      "\tPerplexity at step 25: 10.196186\n",
      "\n",
      "Valid Perplexity: 30.28\n",
      "\n",
      "Generated Text after epoch 24 ... \n",
      "======================== New text Segment ==========================\n",
      "\t her.  \"well you i\n",
      "will you broad to my bead.  if the golden the father, and said, i must you will my great youch all, and the golden the gold-children they saw\n",
      "eame, if your brother brother brother brother brother brother brotherse, and when\n",
      "the brother brother brother brother brother brotherse, anded home took his hisses, and\n",
      "whouse, and when they had rode beautiful and the father, and said, i must you will my great your brother brother brother brother brother brother brotherse, anded home took his hisses, and\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "whouse, and when they had rode beautiful and the father, and said, i must you will my great your brother brother brother brother brother brother brotherse, anded home took his hisses, and\n",
      "whouse, and when they had rode beautiful and the father, and said, i must you will my great your brother brother brother brother brother brother brotherse, anded home took his hisses, and\n",
      "whouse, and when they had rode beautiful and the father, and said, i must you will my great your brother brother brother brother brother brother brotherse, anded home took his hisses, and\n",
      "whouse, and when they had rode beautiful and the father, and said, i must you will my great your brother brother brother brother brother brother brotherse, anded home took his hisses, and\n",
      "whouse, and when they had rode beautiful and the father, and said, i must you will my great your brother brother brother brother brother brother brotherse, anded home took his hisses, and\n",
      "whouse, and when they had rode beautiful and the father, and said, i must you will my great your brother brother brother brother brother brother brotherse, anded home took his hisses, and\n",
      "whouse, and when they had rode beautiful and the father, and said, i must you will my great your brother brother brother brother brother brother brotherse, anded home took his hisses, and\n",
      "whouse, and when they had rode beautiful and the father, and said, i must you will my great your brother brother brother brother brother brother brotherse, anded home to\n",
      "\n",
      "\n",
      "\n",
      "Document 45 Step 26 processed (Perplexity: 13.41).\n",
      "Document 46 Step 26 processed (Perplexity: 21.60).\n",
      "Document 21 Step 26 processed (Perplexity: 11.51).\n",
      "Document 56 Step 26 processed (Perplexity: 4.17).\n",
      "Document 71 Step 26 processed (Perplexity: 10.33).\n",
      "Document 18 Step 26 processed (Perplexity: 9.85).\n",
      "Document 5 Step 26 processed (Perplexity: 14.08).\n",
      "Document 43 Step 26 processed (Perplexity: 11.68).\n",
      "Document 77 Step 26 processed (Perplexity: 3.85).\n",
      "Document 32 Step 26 processed (Perplexity: 11.25).\n",
      "Average loss at step 26: 2.303342\n",
      "\tPerplexity at step 26: 10.007570\n",
      "\n",
      "Valid Perplexity: 37.89\n",
      "\n",
      "Generated Text after epoch 25 ... \n",
      "======================== New text Segment ==========================\n",
      "\t the lighted.  burning he recover,\n",
      "and the lighted the lighte sto stop ith him.                       i'll i cannot\n",
      "my take you, answered to be physician, and the light lace the physician, and said, deat is i will not you, answered\n",
      "on the hat still before the forried the physician, and then the her was the physician, said, light lame\n",
      "to his le physician, and said, light lame, the light only one one onew\n",
      "on, the deard the light one his of the her's\n",
      "daughter.  then he saw how to sto stop it.  it he he fell down the was and one purposely madeath his befor of the her wistake\n",
      "in the fiUNKng and theremadeath was just sick and by the her and threath\n",
      "their prightening, said, you must godfalst\n",
      "heard there lighte, and then the physician, said, light lame\n",
      "to his le physician, and said, light lame, the light only one one onew\n",
      "on, the deard the light one his of the her's\n",
      "daughter.  then he saw how to sto stop it.  it he he fell down the was and one purposely madeath his befor of the her wistake\n",
      "in the fiUNKng and theremadeath was just sick and by the her and threath\n",
      "their prightening, said, you must godfalst\n",
      "heard there lighte, and then the physician, said, light lame\n",
      "to his le physician, and said, light lame, the light only one one onew\n",
      "on, the deard the light one his of the her's\n",
      "daughter.  then he saw how to sto stop it.  it he he fell down the was and one purposely madeath his befor of the her wistake\n",
      "in the fiUNKng and theremadeath was just sick and by the her and threath\n",
      "their prightening, said, you must godfalst\n",
      "heard there lighte, and then the physician, said, light lame\n",
      "to his le physician, and said, light lame, the light only one one onew\n",
      "on, the deard the light one his of the her's\n",
      "daughter.  then he saw how to sto stop it.  it he he fell down the was and one purposely madeath his befor of the her wistake\n",
      "in the fiUNKng and theremadeath was just sick and by the her and threath\n",
      "their prightening, said, you must godfalst\n",
      "heard there lighte, and then the physician, said, light \n",
      "\n"
     ]
    }
   ],
   "source": [
    "num_steps = 26 # Number of steps we run the algorithm for\n",
    "# How many training steps are performed for each document in a single step\n",
    "steps_per_document = 100 \n",
    "\n",
    "# How often we run validation\n",
    "valid_summary = 1\n",
    "\n",
    "# In the book we run tests with this set to both 20 and 100\n",
    "train_doc_count = 100\n",
    "train_docs_to_use = 10 # Number of docs we use in a single step\n",
    "\n",
    "# Store the training and validation perplexity at each step\n",
    "cf_valid_perplexity_ot = []\n",
    "cf_train_perplexity_ot = []\n",
    "\n",
    "session = tf.InteractiveSession()\n",
    "# Initializing variables\n",
    "tf.global_variables_initializer().run()\n",
    "\n",
    "print('Initialized')\n",
    "average_loss = 0\n",
    "\n",
    "# We use the first 10 documents that has \n",
    "# more than (num_steps+1)*steps_per_document bigrams for creating the validation dataset\n",
    "\n",
    "# Identify the first 10 documents following the above condition\n",
    "long_doc_ids = []\n",
    "for di in range(num_files):\n",
    "  if len(data_list[di])>(num_steps+1)*steps_per_document:\n",
    "    long_doc_ids.append(di)\n",
    "  if len(long_doc_ids)==10:\n",
    "    break\n",
    "\n",
    "# Generating validation data\n",
    "data_gens = []\n",
    "valid_gens = []\n",
    "for fi in range(num_files):\n",
    "  # Get all the bigrams if the document id is not in the validation document ids\n",
    "  if fi not in long_doc_ids:\n",
    "    data_gens.append(DataGeneratorOHE(data_list[fi],batch_size,num_unroll))\n",
    "  # if the document is in the validation doc ids, only get up to the \n",
    "  # last steps_per_document bigrams and use the last steps_per_document bigrams as validation data\n",
    "  else:\n",
    "    data_gens.append(DataGeneratorOHE(data_list[fi][:-steps_per_document],batch_size,num_unroll))\n",
    "    # Defining the validation data generator\n",
    "    valid_gens.append(DataGeneratorOHE(data_list[fi][-steps_per_document:],1,1))\n",
    "\n",
    "feed_dict={}\n",
    "for step in range(num_steps):\n",
    "    print('\\n')\n",
    "    for di in np.random.permutation(train_doc_count)[:train_docs_to_use]:                    \n",
    "        doc_perplexity = 0\n",
    "        for doc_step_id in range(steps_per_document):\n",
    "            \n",
    "            # Get a set of unrolled batches\n",
    "            u_data, u_labels = data_gens[di].unroll_batches()\n",
    "            \n",
    "            # Populate the feed dict by using each of the data batches\n",
    "            # present in the unrolled data\n",
    "            for ui,(dat,lbl) in enumerate(zip(u_data,u_labels)):            \n",
    "                feed_dict[train_dataset[ui]]=dat\n",
    "                feed_dict[train_labels[ui]] = lbl\n",
    "            \n",
    "            # Running the TensorFlow operations\n",
    "            _, l, _, _, _, perp = session.run(\n",
    "                [rnn_optimizer, rnn_loss, y_predictions,train_dataset,\n",
    "                 train_labels, train_perplexity_without_exp], \n",
    "                feed_dict=feed_dict)\n",
    "            \n",
    "            # Update doc_perpelxity variable\n",
    "            doc_perplexity += perp\n",
    "            \n",
    "            # Update the average_loss variable\n",
    "            average_loss += perp\n",
    "            \n",
    "        print('Document %d Step %d processed (Perplexity: %.2f).'\n",
    "              %(di,step+1,np.exp(doc_perplexity/(steps_per_document)))\n",
    "             )\n",
    "\n",
    "        # resetting hidden state after processing a single document\n",
    "        # It's still questionable if this adds value in terms of learning\n",
    "        # One one hand it's intuitive to reset the state when learning a new document\n",
    "        # On the other hand this approach creates a bias for the state to be zero\n",
    "        # We encourage the reader to investigate further the effect of resetting the state\n",
    "        session.run([reset_prev_train_h_op, reset_prev_train_s_op]) # resetting hidden state for each document\n",
    "    \n",
    "    # Validation phase\n",
    "    if step % valid_summary == 0:\n",
    "      \n",
    "      # Compute the average validation perplexity\n",
    "      average_loss = average_loss / (train_docs_to_use*steps_per_document*valid_summary)\n",
    "      \n",
    "      # Print losses\n",
    "      print('Average loss at step %d: %f' % (step+1, average_loss))\n",
    "      print('\\tPerplexity at step %d: %f' %(step+1, np.exp(average_loss)))\n",
    "    \n",
    "      cf_train_perplexity_ot.append(np.exp(average_loss))\n",
    "      average_loss = 0 # reset loss\n",
    "      valid_loss = 0 # reset loss\n",
    "      \n",
    "      # calculate valid perplexity\n",
    "      for v_doc_id in range(10):\n",
    "          # Remember we process things as bigrams\n",
    "          # So need to divide by 2\n",
    "          for v_step in range(steps_per_document//2):\n",
    "            uvalid_data,uvalid_labels = valid_gens[v_doc_id].unroll_batches()        \n",
    "\n",
    "            # Run validation phase related TensorFlow operations       \n",
    "            v_perp = session.run(\n",
    "                valid_perplexity_without_exp,\n",
    "                feed_dict = {valid_dataset:uvalid_data[0],valid_labels: uvalid_labels[0]}\n",
    "            )\n",
    "\n",
    "            valid_loss += v_perp\n",
    "            \n",
    "          session.run([reset_valid_h_op, reset_valid_s_op])\n",
    "          # Reset validation data generator cursor\n",
    "          valid_gens[v_doc_id].reset_indices()    \n",
    "    \n",
    "      print()\n",
    "      v_perplexity = np.exp(valid_loss/(steps_per_document*10.0//2))\n",
    "      print(\"Valid Perplexity: %.2f\\n\"%v_perplexity)\n",
    "      cf_valid_perplexity_ot.append(v_perplexity)\n",
    "      \n",
    "        \n",
    "      # Generating new text ...\n",
    "      # We will be generating one segment having 1000 bigrams\n",
    "      # Feel free to generate several segments by changing\n",
    "      # the value of segments_to_generate\n",
    "      print('Generated Text after epoch %d ... '%step)  \n",
    "      segments_to_generate = 1\n",
    "      chars_in_segment = 1000\n",
    "    \n",
    "      for _ in range(segments_to_generate):\n",
    "        print('======================== New text Segment ==========================')\n",
    "        # Start with a random word\n",
    "        test_word = np.zeros((1,in_size),dtype=np.float32)\n",
    "        test_word[0,data_list[np.random.randint(0,num_files)][np.random.randint(0,100)]] = 1.0\n",
    "        print(\"\\t\",reverse_dictionary[np.argmax(test_word[0])],end='')\n",
    "        \n",
    "        # Generating words within a segment by feeding in the previous prediction\n",
    "        # as the current input in a recursive manner\n",
    "        for _ in range(chars_in_segment):    \n",
    "          test_pred = session.run(test_prediction, feed_dict = {test_dataset:test_word})  \n",
    "          next_ind = sample(test_pred.ravel())\n",
    "          test_word = np.zeros((1,in_size),dtype=np.float32)\n",
    "          test_word[0,next_ind] = 1.0\n",
    "          print(reverse_dictionary[next_ind],end='')\n",
    "        \n",
    "        print(\"\")\n",
    "        # Reset test state\n",
    "        session.run([reset_test_h_op, reset_test_s_op])\n",
    "      print(\"\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nJEmS1LT/B3MGD9CyPNUwAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1f9725df940>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "x_axis = np.arange(len(train_perplexity_ot[1:25]))\n",
    "f,(ax1,ax2)=pylab.subplots(1,2,figsize=(18,6))\n",
    "\n",
    "ax1.plot(x_axis,train_perplexity_ot[1:25],label='RNN',linewidth=2,linestyle='--')\n",
    "ax1.plot(x_axis,cf_train_perplexity_ot[1:25],label='RNN-CF',linewidth=2)\n",
    "ax2.plot(x_axis, valid_perplexity_ot[1:25], label='RNN',linewidth=2,linestyle='--')\n",
    "ax2.plot(x_axis, cf_valid_perplexity_ot[1:25], label='RNN-CF',linewidth=2)\n",
    "ax1.legend(loc=1, fontsize=20)\n",
    "ax2.legend(loc=1, fontsize=20)\n",
    "pylab.title('Train and Valid Perplexity over Time (RNN vs RNN-CF)',fontsize=24)\n",
    "ax1.set_title('Train Perplexity',fontsize=20)\n",
    "ax2.set_title('Valid Perplexity',fontsize=20)\n",
    "ax1.set_xlabel('Epoch',fontsize=20)\n",
    "ax2.set_xlabel('Epoch',fontsize=20)\n",
    "pylab.savefig('RNN_perplexity_cf.png')\n",
    "pylab.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
